首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Reg ex部分故障

Reg ex部分故障
EN

Stack Overflow用户
提问于 2018-03-20 22:23:35
回答 1查看 41关注 0票数 1

请容忍我这一点,因为我可能解释得不太好。

我有一个简单的正则表达式:

代码语言:javascript
复制
^(The\s)?(cat\s)?(sat\s)?(on\s)?(the\s)?(mat\.)?

将文本转换为

代码语言:javascript
复制
The cat sat on the mat.

成功通过。太棒了!

然而,我所追求的是一种找出regex在哪些组上失败的方法。例如:

代码语言:javascript
复制
The cat sat on the mat # fails on group 6 (no period)
The cat sat on teh mat. # fails on group 5 (teh instead of the)
The kat sat on the mat. # fails on group 2 (kat instead of cat)

后一个例子在其他方面都很好,只是有一个组失败了。我的问题是:在Python中,有没有一种方法可以确定该字符串是否会在逐个组的基础上成功-而不必在每个组中创建regex fir的迭代?

regex101 now with added cats

EN

回答 1

Stack Overflow用户

发布于 2018-03-20 22:42:33

如果只想知道第一个故障发生在哪里,可以使用re.findall()

代码语言:javascript
复制
import re

regex = r'^(The\s)?(cat\s)?(sat\s)?(on\s)?(the\s)?(mat\.)?'
text = ''The cat sat on teh mat.'

re.findall(regex, text)
# [('The ', 'cat ', 'sat ', 'on ', '', '')]

因此,您可以通过执行以下操作来找出第一次失败的索引:

代码语言:javascript
复制
re.findall(regex, text)[0].index('')
# 4

(请注意,如果您的正则表达式中有重叠匹配、回溯或其他更不寻常的模式,则此方法可能没有用)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49386824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档