我試圖從/字符串中使用正則表達式匹配子字符串中的某個東西,該字符串在/../開頭或後面跟着一個/。在第一行或/(正則表達式)之後刪除東西
到目前爲止,我有
re.sub('(?<=[/]|\A).+(?=[/][.][.][/])', '', str)
我不斷收到錯誤,但是當我嘗試這樣或其他變化,從它的第一後刪除所有項目/不刪除分組的第一個字符。
我試圖從/字符串中使用正則表達式匹配子字符串中的某個東西,該字符串在/../開頭或後面跟着一個/。在第一行或/(正則表達式)之後刪除東西
到目前爲止,我有
re.sub('(?<=[/]|\A).+(?=[/][.][.][/])', '', str)
我不斷收到錯誤,但是當我嘗試這樣或其他變化,從它的第一後刪除所有項目/不刪除分組的第一個字符。
看來/
本身永遠不可能成爲比賽的一部分。因此,儘量
re.sub(r'[^/]*(?=/\.\./)', '', mystr)
[^/]
不是一個/
任何字符相匹配,所以它開始在字符串的開頭匹配,直到它遇到/../
,除非有在-之間的/
,在這種情況下,比賽將在那之後開始。
+1你是正確的,這種方式不再需要lookbehind。 – stema
完美謝謝!有時候我會忘記你可以做相反的事情。 – Alexandertyler
請提供示例字符串和預期結果,以便於理解。 – stema
這個正則表達式甚至不會編譯,因爲Python正則表達式中的(?<=/| \ A)'是非法的(lookbehinds必須是恆定寬度,並且匹配0或1個字符)。 –
本質上,我想採取像測試/新/../和返回測試//../我發現,使用lookbehind將開始在一個/的第一個實例和繼續到/ ... /而我想把/最接近/的一個/的實例,並刪除之間的一切。 – Alexandertyler