我花了一些時間來學習正則表達式,但我還是不明白下面的技巧是如何工作匹配不同的順序兩個字兩個字以任意順序。匹配使用正則表達式
import re
reobj = re.compile(r'^(?=.*?(John))(?=.*?(Peter)).*$',re.MULTILINE)
string = '''
John and Peter
Peter and John
James and Peter and John
'''
re.findall(reobj,string)
結果
[('John', 'Peter'), ('John', 'Peter'), ('John', 'Peter')]
(https://www.regex101.com/r/qW4rF4/1)
我知道(?=.*)
部分稱爲Positive Lookahead
,但它是如何在這種情況下工作嗎?
任何解釋?
有很多關於lookaheads如何工作的解釋。也許你應該閱讀其中的一些,而不是要求我們爲你寫另一個*。 (換句話說,這是一個關於一個記錄完整且通常解釋清楚的主題的非常基本的問題,我很欣賞這個特性對初學者來說並不是很明顯,但對於每一個可能的技術水平都沒有任何解釋。 ) – Tomalak 2015-04-06 10:07:27
我已經閱讀了一些關於「Positive Lookahead」的教程,但我不記得任何解釋這一點的東西。你能否給我提供一些有用的鏈接? – Aaron 2015-04-06 10:09:30
http://www.regular-expressions.info/lookaround.html – Tomalak 2015-04-06 10:11:30