如何解决python re.search没有找到
s="XX.1.1. Accidents"
pattern = re.compile(r'\d|[a-zA-Z]\.\s([a-zA-Z]\S+)')
match=pattern.search(s)
if match:
print(match.group(1))
输出为无。但是,我认为应该是“事故”,有人可以告诉我原因吗?
解决方法
您的|
令人困惑-由于您没有将其放入捕获组或其他任何内容,因此它将与{{1}的\d
或 all 相匹配}}。这是一个问题,因为正则表达式会贪婪地工作,而您最终只会得到一个[a-zA-Z]\.\s([a-zA-Z]\S+)
。
如果您使用\d
,它将正常工作,并且您会收到(?:\d|[a-zA-Z])\.\s([a-zA-Z]\S+)
。
您可以将整个第一部分放在方括号中,然后搜索空格,然后搜索字符和其余部分:
pattern = re.compile(r'[a-zA-Z\d.]*\s([a-zA-Z]\S+)')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。