【发布时间】:2010-11-15 20:36:25
【问题描述】:
使用 Ruby,我如何使用单个正则表达式匹配“xy y ay xy +y”中所有出现的“y”,但前面没有 x (y, ay, +y)?
/[^x]y/ 也匹配前面的字符,所以我需要一个替代...
【问题讨论】:
-
我本来打算建议消极的向后看,但看起来你在这方面不太走运:regular-expressions.info/lookaround.html#limitbehind。 “最后,像 JavaScript、Ruby 和 Tcl 这样的风格根本不支持后视,即使它们支持前瞻。”
-
如果不支持后向断言,我们可以使用:
([^x]y")|(^y")。 'y' 可能出现在字符串的开头,这种情况不在/[^x]y/的范围内。 -
仅供参考:Ruby 2.0.0 及更高版本支持lookbehind。见docs.ruby-lang.org/en/2.0.0/…
标签: ruby regex string regex-negation