a=“aa123bb123cc123”
b=re.findall(r"([a-z]+123){2}",a)
print(b)
输出结果为什么是["bb123"]而不是["aa123bb123"]
a=“aa123bb123cc123”
b=re.findall(r"([a-z]+123){2}",a)
print(b)
输出结果为什么是["bb123"]而不是["aa123bb123"]
字符串 a='aa123bb123cc123' 包含以下部分:
aa123
bb123
cc123
匹配过程
第一次匹配:从头开始,aa123bb123 符合 ([a-z]+123){2} 的模式。
第一个捕获组匹配 aa123。
第二个捕获组匹配 bb123。
因此,整个匹配结果是 aa123bb123,但 re.findall 只返回捕获组的内容,即 ["bb123"]。
第二次匹配:从 cc123 开始检查,发现没有足够的字符来满足 ([a-z]+123){2} 的模式(因为后面没有再跟一个 [a-z]+123)。
如果想要得到["aa123bb123"] 结果,可以去掉捕获组括号,使用非捕获组 (?:...) 来避免捕获单个部分:
import re
a = 'aa123bb123cc123'
b = re.findall(r"(?:[a-z]+123){2}", a)
print(b) # 输出: ['aa123bb123']