我写的正则表达式中的模式来捕捉只有这两456jkl,jkl456其中456jkl,jkl456,456,jkl但是当我执行脚本,这让他们的所有四个。我要去哪里错了?我的剧本:import recontent = """456jkl, 456, jkl, jkl456"""item = [item for item in re.findall('((?:jkl|456)+)',content)]print(item)我越来越:['456jkl', '456', 'jkl', 'jkl456']预期产量:['456jkl', 'jkl456']
2 回答
qq_花开花谢_0
TA贡献1835条经验 获得超7个赞
您的正则表达式当前与任何一种模式都匹配,但是您希望它与两种模式都匹配。您可以使用字符串格式来做到这一点:
a = '456'
b = 'jkl'
re.findall(rf'\b(?:{a}{b}|{b}{a})\b', content)
['456jkl', 'jkl456']
这意味着“仅匹配此序列,或其相反”。这样,(伪?)模式,例如“ 456456”和“ jkljkl”将不匹配。
(适用于python3.6 + f字符串。)
添加回答
举报
0/150
提交
取消