标签: python regex
如果我有一个正则表达式,其中|运算符分隔两种可能的模式。是否有可能找到与我的字符串匹配的模式?
|
例如,如果我有模式([cC]at|[dD]og)并且我在字符串clifford is a dog中找到匹配项。我可以回过头来看看模式[dD]og是成功的匹配而不是替代:[cC]at。
([cC]at|[dD]og)
clifford is a dog
[dD]og
[cC]at
我理解我可以尝试单独匹配每个备用模式然后只取成功但我想知道是否有另一个解决方案不需要每个模式的匹配尝试(我希望应用此在我试图一次匹配几百个模式的情况下)
答案 0 :(得分:1)
您可以使用两个不同的组并检查其索引,如下所示:
([cC]at)|([dD]og)
<强> 强>
匹配信息
MATCH 1 Group 2. [14-17] `dog` MATCH 2 Group 1. [33-36] `cat`
顺便说一句,如果由于某种原因你必须对整个轮换进行分组,你可以使用这样的非捕获组:
(?:([cC]at)|([dD]og))