Ruby regex基于否定返回匹配

时间:2012-09-05 17:54:08

标签: ruby regex

我只想捕捉nbnbaasd<sd中出现在任何a之前的字符串部分。

我希望它返回nbnb作为匹配。

 /.+(?!a)/.match("nbnbaasd<sd") # returns the whole string

2 个答案:

答案 0 :(得分:5)

只需使用negated character set

/[^a]+/.match("nbnbaasd<sd")

它比先行方法更有效率。


在此处查看:[{3}}

答案 1 :(得分:1)

它返回整个字符串,因为实际上,“nbnbaasd&lt; sd”不是后跟“a”。

试试这个。

/.+?(?=a)/.match("nbnbaasd<sd")

(你实际上并不需要使用前瞻来实现这一目标,但也许你已经简化了你的问题,并且在你真正的问题中你出于某种原因需要零宽度断言。所以这是一个接近的解决方案可能是你尝试过的那个。)