对此正则表达式表达行为感到困惑

时间:2019-08-12 01:17:47

标签: regex python-3.x

引起问题的短语:

## synonym:g

正则表达式:

^## (intent|synonym|lookup|regex):(\w+\+?\w+?)$

为什么此表达式与上面的短语不匹配?

但是将上面的正则表达式修改为:

^## (intent|synonym|lookup|regex):(\w+)$

匹配短语。

1 个答案:

答案 0 :(得分:3)

问题是您当前正则表达式的最后一部分:

(\w+\+?\w+?)

与您可能认为的相反,这与字母g不匹配。相反,它说要匹配两个或两个以上的字母,并且在它们之间有一个可选的+

这是您可能要在此处进行的操作:

^## (intent|synonym|lookup|regex):(\w+(?:\+\w+)*)$

此正则表达式的结尾部分将匹配:

g
g+g2

等,但是它不允许使用后跟+且后面没有一个或多个单词字符的情况。

Demo

相关问题