无法捕获所需的小组并踢出其余的小组

我写的正则表达式中的模式来捕捉只有这两456jkl,jkl456其中456jkl,jkl456,456,jkl但是当我执行脚本,这让他们的所有四个。我要去哪里错了?


我的剧本:


import re


content = """456jkl, 456, jkl, jkl456"""


item = [item for item in re.findall('((?:jkl|456)+)',content)]

print(item)

我越来越:


['456jkl', '456', 'jkl', 'jkl456']

预期产量:


['456jkl', 'jkl456']


茅侃侃
浏览 134回答 2
2回答

qq_花开花谢_0

您的正则表达式当前与任何一种模式都匹配,但是您希望它与两种模式都匹配。您可以使用字符串格式来做到这一点:a = '456'b = 'jkl're.findall(rf'\b(?:{a}{b}|{b}{a})\b', content)['456jkl', 'jkl456']这意味着“仅匹配此序列,或其相反”。这样,(伪?)模式,例如“ 456456”和“ jkljkl”将不匹配。(适用于python3.6 + f字符串。)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python