python-3.x regexp多个先行行为的解释

vnjpjtjt  于 2023-10-21  发布在  Python
关注(0)|答案(1)|浏览(130)

请帮助理解为什么r'\b\w+(?=\d)(?=[A-Z])'不匹配Python3A
它说r'\b\w+(?=\d)(?=[A-Z])'搜索单词后跟一个数字,然后是一个大写字母。Python3A由单词Python、数字3和大写字母A组成。如果语句是正确的,那么它应该匹配Python
Multiple Positive Lookaheads

vuktfyat

vuktfyat1#

它不匹配,因为在同一个地方有两个lookahead,其中一个Assert一个数字,另一个Assert一个大写字母。因为它们之间没有重叠,其中一个不可能是真的,所以匹配失败。你所需要的只是一个数字后跟一个大写字母的先行代码:

\b\w+(?=\d[A-Z])

regex101上的正则表达式演示

相关问题