gpt4 book ai didi

python - 为什么这个正则表达式匹配给出这个结果?

转载 作者:行者123 更新时间:2023-11-28 21:12:55 25 4
gpt4 key购买 nike

对于元字符+,模式必须至少出现一次。在尝试匹配此字符串中的 a[ab]+ 时:abbaaabbbbaaaaa 使用 python 的 re.findall(),我希望它返回所有这些可能的匹配从第一个字母 a 开始,如 ['ab', 'abb', 'abba', 'abbaaa', ... etc] 直到达到整个字符串(这也是一个匹配项)。此外,我认为它也适用于字符串中的每个 a 而不仅仅是第一个,所以我想匹配的结果会不止于此。

这是我使用的代码:

import re

string = 'abbaaabbbbaaaaa'
matches = re.findall('a[ab]+', string)
for match in matches:
print(match)

但是,结果只是abbaaabbbbaaaaa(整个字符串)。那么我理解错了什么?

最佳答案

a[ab]+ 将匹配单个字符串(假设它完全匹配)。整个字符串 abbaaabbbbaaaaa 与该正则表达式匹配,因此您得到一个匹配项:整个字符串。它不会为您提供可能匹配的每一小块。

换句话说,a[ab] 的每次匹配都会“消耗”一个字符。即,匹配字符“用完”,程序移动到下一个字符。通常,这就是您想要的:您想查看整个字符串是否匹配,或者有多少匹配,而不是查找构成更大匹配的所有零散部分。

关于python - 为什么这个正则表达式匹配给出这个结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33687087/

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