2013-02-01 54 views
2

我無法理解這些正則表達式如何工作以及何時使用它們。我還沒有在Python網站上找到這些正則表達式的具體例子。我知道SED AWK但沒有使用這些類型的正則表達式有無法理解python正則表達式?=

(?=...) 
(?<=...) 
(?(id/name)yes-pattern|no-pattern) 
+0

這些都是在're'文檔的[本節](http://docs.python.org/2/library/re.html#regular-expression-syntax)中解釋的。 – mgilson

回答

7

(?=...)positive lookahead assertion。它匹配?=在當前位置匹配後的圓括號中的部分,但不會消耗任何匹配字符。例如。正則表達式a(?=b)將匹配a後跟b,但不會返回b作爲匹配的一部分。

(?<=...)是一樣的,但看一下&#x200a; 後面,即它看起來倒退。同樣,它不會消耗任何東西。

(?(id/name)yes-pattern|no-pattern)conditional。如果named groupid/name匹配,則此時字符串必須匹配yes-pattern,否則no-pattern

說實話,雖然這些都是相當先進的功能,我不記得曾經使用過一個條件。查找更常見,但通常受到正則表達式引擎的限制,例如,在許多情況下,只能用固定長度的字符串來完成後視。

+0

感謝好友,我現在明白了 – user2027303

+0

我連接了幾次的網站是學習正則表達式的非常好的資源。 – Joey

+0

@Joey:'只能用固定長度的字符串來完成'你的意思是後視?預見性相當於從當前位置開始一個新的匹配,並在預見之內使用正則表達式,這很容易實現。 – nhahtdh