【发布时间】:2014-09-26 00:16:45
【问题描述】:
我正面临这个小正则表达式问题(标志:全球)
[-+*&|]
这意味着匹配例如这个表达式中的+,而不是++或--:
12 + 47 - i++ / --foo
但是它匹配它们。
我知道这个解决方案,但它很丑(需要重复三次):
[^-+*&|][-+*&|][^-+*&|]
或许
(?<![-+*&|])([-+*&|])(?![-+*&|])
有更好(更短、更易读)的解决方案吗?
【问题讨论】:
-
@AvinashRaj 我不想匹配 ++ 和 --。
-
@MightyPork 在
++中甚至没有+? -
当然不是,是不同的算子。我只想要独立的 + 和 -。
-
这不是常规语言。虽然您可以将它与 Python(或 Perl 等)正则表达式匹配,但这并不意味着您应该这样做;一旦你开始使用前瞻和后瞻,你很容易陷入指数级爆炸。此外,你的规则,无论你做得多么漂亮,都将无法匹配
12+-3,我认为这在你的语言中是完全有效的。那么……为什么不使用简单的 OP 解析器而不是正则表达式呢? -
不能减少比这更多的
(?<![-+*&|])([-+*&|])(?!\1)