nbnbaasd<sd
の前に表示される文字列の部分をキャプチャしたいだけですa
。
nbnb
試合として返して欲しいです。
/.+(?!a)/.match("nbnbaasd<sd") # returns the whole string
否定された文字セットを使用するだけです:
/[^a]+/.match("nbnbaasd<sd")
これは、先読み方式よりもはるかに効率的です。
ここで実際に見てください:http://regexr.com?32288
実際、「nbnbaasd<sd」の後に「a」がないため、文字列全体が返されます。
これを試して。
/.+?(?=a)/.match("nbnbaasd<sd")
(これを達成するために実際に先読みを使用する必要はありませんが、おそらく問題を単純化し、実際の問題では何らかの理由で幅ゼロのアサーションが必要になる可能性があります。したがって、これはできるだけ近い解決策ですあなたが試みたもの。)