我有绳子
string = 'fail alm alarm'
和- 我想匹配的一组子字符串
substrings=[norm,alm,fail]
。
但是,我希望norm
和alm
具有比fail
更高的匹配优先级。
我写了pattern=r'norm|alm|fail'
考虑到由于norm
和alm
出现在fail
之前,所以它们将被给予优先级re.search('norm|alm|fail', 'fail alm alarm')
返回<re.Match object; span=(20, 24), match='fail'>
但是我希望它返回alm
。
提前感谢您的帮助
2条答案
按热度按时间wribegjk1#
正则表达式中的顺序只影响正则表达式引擎尝试在 current 位置查找匹配项的顺序。
为了达到你的目标,你需要向前看,并检查是否有“规范”或“alm”当走向“失败”。
nx7onnlm2#
可以使用
re.findall
,然后逐个检查字符串是否存在: