【发布时间】:2015-05-05 11:06:53
【问题描述】:
我有 following regular expression (Python),我在以下一点上不明白。为什么它也与第一个交替不匹配?
正则表达式(间隔以便更好地理解):
(?:
\$\{
(?P<braced>
[_a-zA-Z][a-zA-Z0-9]*(?::[_a-zA-Z][_a-zA-Z0-9]*)+
)
\}
)
| ### SECOND ALTERNATION ###
(?:
\$
(?P<named>
[_a-zA-Z][a-zA-Z0-9]*(?::[_a-zA-Z][_a-zA-Z0-9]*)+
)
)
测试字符串:
asdasd $asd:sd + ${asd123:asd} $HOME $$asd
匹配的东西:
asdasd $asd:sd + ${asd123:asd} $HOME $$asd
根据上面的正则表达式模式,也应该出现第一个交替,即:
${asd123:asd}
我好像不太明白交替模式?
【问题讨论】:
-
你的意思是你也想捕获
${...}?看看regex101.com/r/uR4hJ9/1。您有非捕获组(?:),当您删除?:时,您将打开捕获。 -
是的,请 :-),谢谢 :-) 让我们看看有什么不同
-
这能回答你的问题吗?
-
还没有:我不明白区别,似乎只有换行符会改变语法?并且您删除了 (?: -> 非捕获组?我想了解一下
-
您的问题有点令人困惑。您是否还无法在 python 中获取所有匹配项,或者只是网站上的显示有问题?
标签: python regex regex-alternation