我只想捕獲nbnbaasd<sd
中出現在任何a
之前的部分字符串。基於否定的Ruby正則表達式返回匹配
我希望它返回nbnb
作爲匹配。
/.+(?!a)/.match("nbnbaasd<sd") # returns the whole string
我只想捕獲nbnbaasd<sd
中出現在任何a
之前的部分字符串。基於否定的Ruby正則表達式返回匹配
我希望它返回nbnb
作爲匹配。
/.+(?!a)/.match("nbnbaasd<sd") # returns the whole string
它返回整個字符串,因爲事實上, 「nbnbaasd < SD」 是不後面是 「A」。
試試這個。
/.+?(?=a)/.match("nbnbaasd<sd")
(你實際上並不需要使用一個超前實現這一點,但也許你已經簡化了您的問題,在你真正的問題,你確實需要某種原因零寬度斷言。所以這是一個解決方案儘可能接近你已經嘗試了一個)
只需使用一個negated character set:
/[^a]+/.match("nbnbaasd<sd")
它比先行的方法更爲有效。
在這裏看到它在行動:http://regexr.com?32288
+1啊......簡潔和優雅。 –