gpt4 book ai didi

python - 使用正则表达式以任意顺序匹配两个单词

转载 作者:太空狗 更新时间:2023-10-30 00:17:14 24 4
gpt4 key购买 nike

我花了一些时间学习正则表达式,但我仍然不明白以下技巧如何以不同顺序匹配两个单词

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')]

enter image description here

( https://www.regex101.com/r/qW4rF4/1 )

我知道 (?=.* ) 部分称为 Positive Lookahead,但它在这种情况下如何工作?

有什么解释吗?

最佳答案

它只是不以任何任意顺序匹配。这里的捕获是由 .* 完成的,它会消耗任何到达它的方式。positive lookahead 做出断言。你有两个 lookaheads 。它们彼此独立。每个断言一个词。所以最后你的正则表达式的工作方式如下:

1)(?=.*?(John))===String 应该有一个John。只是一个断言。不消耗任何东西

2)(?=.*?(Peter))===String应该有一个Peter。只是一个断言。不消耗任何东西

3).*===如果断言通过则消费任何东西

所以你看这里的顺序并不重要。重要的是断言应该通过

关于python - 使用正则表达式以任意顺序匹配两个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29469084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com