正規表現の下線間のすべての文字を選択します

アビシェーク:

私は、アンダースコアとの間のすべての文字を選択するには、正規表現を記述しようとしています。私はで終わる_([^_]+)_が、それはすべてのグループと一致していません

文字列:abc_bca_vag_hag_bag出力:bca vag hag

これで缶誰かの助け?

スイーパー:

あなたの正規表現はします一致するアンダースコアを、一度一致している事が再びマッチされることはありません。だから、マッチングした後_bca_、それは内の最後のアンダースコアがいることを見ていない_bca_、実際に前にある同じアンダースコアですvagこれは、と思ってvag、それはすでに前の試合でそれを前のアンダースコアに一致したので、アンダースコアが付いていません。

あなたは使用する必要が先読みlookbehindsを

(?<=_)[^_]+(?=_)

これらは、アンダースコアとは一致しません。彼らは唯一の「見た目」意志とアンダースコアがあるかどうかを参照してください。

デモ

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=223976&siteId=1