我面临这个小正则表达式问题(标志:全局(
[-+*&|]
它的意思是匹配,例如这个表达式中的+,但不是++或--:
12 + 47 - i++ / --foo
然而,它与它们都匹配。
我知道这个解决方案,但它很难看(需要重复该组三次(:
[^-+*&|][-+*&|][^-+*&|]
或者
(?<![-+*&|])([-+*&|])(?![-+*&|])
有更好的(更短、更可读的(解决方案吗?
这对我来说似乎可读性更强,但不是很好。
(?<![+-*/&|])(?P<operator>[+-*/&|])(?!(?P=operator))
匹配:
+ ++ - -- * ** / // & && | ||
^ ^ ^ ^ ^ ^
[-+*&|]{1,3}
您可以使用{min,max}
来定义最小和最大出现次数。