アビシェーク:
私は、アンダースコアとの間のすべての文字を選択するには、正規表現を記述しようとしています。私はで終わる_([^_]+)_
が、それはすべてのグループと一致していません
文字列:abc_bca_vag_hag_bag
出力:bca vag hag
これで缶誰かの助け?
スイーパー:
あなたの正規表現はします一致するアンダースコアを、一度一致している事が再びマッチされることはありません。だから、マッチングした後_bca_
、それは内の最後のアンダースコアがいることを見ていない_bca_
、実際に前にある同じアンダースコアですvag
。これは、と思ってvag
、それはすでに前の試合でそれを前のアンダースコアに一致したので、アンダースコアが付いていません。
あなたは使用する必要が先読みとlookbehindsを:
(?<=_)[^_]+(?=_)
これらは、アンダースコアとは一致しません。彼らは唯一の「見た目」意志とアンダースコアがあるかどうかを参照してください。