2012-11-14 49 views
2

我試圖從/字符串中使用正則表達式匹配子字符串中的某個東西,該字符串在/../開頭或後面跟着一個/。在第一行或/(正則表達式)之後刪除東西

到目前爲止,我有

re.sub('(?<=[/]|\A).+(?=[/][.][.][/])', '', str) 

我不斷收到錯誤,但是當我嘗試這樣或其他變化,從它的第一後刪除所有項目/不刪除分組的第一個字符。

+2

請提供示例字符串和預期結果,以便於理解。 – stema

+0

這個正則表達式甚至不會編譯,因爲Python正則表達式中的(?<=/| \ A)'是非法的(lookbehinds必須是恆定寬度,並且匹配0或1個字符)。 –

+0

本質上,我想採取像測試/新/../和返回測試//../我發現,使用lookbehind將開始在一個/的第一個實例和繼續到/ ... /而我想把/最接近/的一個/的實例,並刪除之間的一切。 – Alexandertyler

回答

2

看來/本身永遠不可能成爲比賽的一部分。因此,儘量

re.sub(r'[^/]*(?=/\.\./)', '', mystr) 

[^/]不是一個/任何字符相匹配,所以它開始在字符串的開頭匹配,直到它遇到/../,除非有在-之間的/,在這種情況下,比賽將在那之後開始。

+0

+1你是正確的,這種方式不再需要lookbehind。 – stema

+0

完美謝謝!有時候我會忘記你可以做相反的事情。 – Alexandertyler

相關問題