我花了一些时间来学习正则表达式,但我还是不明白下面的技巧是如何工作匹配不同的顺序两个字两个字以任意顺序。匹配使用正则表达式
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