当命名捕获组不能使用两次时,如何在非捕获组之后的OR之前使用命名的正则表达式捕获?

时间:2016-08-19 01:29:02

标签: python regex named-captures

我在python脚本中使用正则表达式来捕获命名组。该组在分隔符字符串" S "之后的OR之前出现。我的困惑来自于无法在同一个正则表达式中两次使用命名捕获组。

我想使用以下无效(命名组使用两次)正则表达式:

(?:^STD_S_)(?P<important>.+?)$|(?:^(?P<important>.+?)(?:STD_S_)$

说明

?: non-capture group ^STD_S_ Starting with some "STD_S_" string which is a standard string plus a delimiter

?P Named important string I want

| OR

^?P stat with important STS_S_$ end with standard

我真的希望我捕获的重要组被命名。我可以删除名称并使其工作。我还可以将单个表达式拆分为两个表达式(OR的每一侧一个),并在python脚本中搜索选择使用哪一个登录。

谢谢!

示例输入

STD_S_important
important_S_STD

示例输出

important #returned by calling the important named group
important

正则表达式基于与第二种情况不匹配的评论。

(?:(?:^STD_S_)(?P<important>.+?)$)|(?:^(?P=important)(?:_S_STD)$)

0 个答案:

没有答案