正则表达只匹配一次(不重复)

时间:2014-08-03 09:05:29

标签: python regex

我正面临这个小正则表达式问题(flags:Global)

[-+*&|]

它意味着匹配例如此表达式中的+,但不匹配++或 - :

12 + 47 - i++ / --foo

然而,它与所有人相匹配。

我知道这个解决方案,但它很难看(需要重复三次):

[^-+*&|][-+*&|][^-+*&|]

或者

(?<![-+*&|])([-+*&|])(?![-+*&|])

任何更好(更短,更易读)的解决方案?

2 个答案:

答案 0 :(得分:0)

这对我来说似乎更具可读性,但不是很多。

(?<![\+\-\*/\&\|])(?P<operator>[\+\-\*/\&\|])(?!(?P=operator))

匹配:

+ ++ - -- * ** / // & && | ||
^    ^    ^    ^    ^    ^

答案 1 :(得分:0)

[-+*&|]{1,3}

您可以使用{min,max}来定义最小和最大出现次数。