我使用 python 正则表达式(re
module) 在我的代码中并注意到在这些情况下的不同行为:
re.findall(r'\s*(?:[a-z]\))?[^.)]+', 'a) xyz. b) abc.') # non-capturing group
# results in ['a) xyz', ' b) abc']
and
re.findall(r'\s*(?<=[a-z]\))?[^.)]+', 'a) xyz. b) abc.') # lookbehind
# results in ['a', ' xyz', ' b', ' abc']
我需要得到的只是['xyz', 'abc']
。为什么这些示例的行为不同以及如何获得所需的结果?
原因a
and b
都包含在第二种情况是因为(?<=[a-z]\))
首先会找到a)
因为环顾四周不会消耗你的任何角色back在字符串的开头。现在[^.)]+
火柴a
现在你在)
.既然你已经做了(?<=[a-z]\))
选修的[^.)]+
火柴xyz
重复同样的事情b) abc
remove ?
从第二种情况,你会得到预期的结果,即['xyz', 'abc']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)