0

我只想捕获nbnbaasd<sd出现在 any 之前的字符串部分a

我希望它nbnb作为比赛返回。

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

2 回答 2

5

只需使用否定字符集

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

它比前瞻方法更有效。


在此处查看实际操作:http ://regexr.com?32288

于 2012-09-05T17:57:04.677 回答
1

它返回整个字符串,因为事实上,“nbnbaasd<sd”后面没有“a”。

试试这个。

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

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

于 2012-09-05T17:56:26.733 回答