2016-10-06 10 views
0

私は文字列A_B_C_D_E_F_Gを持っており、すべての文字列A、B ..をいくつかの正規表現を使って配列に入れたいと思っています。私は試しました正規表現で繰り返しグループを取得する

((.*?)_)+ 

しかし、これは最後の繰り返しを格納するようです。一つの正規表現でそれらのすべてを得る方法はありますか?そうでなければ何を使うべきですか?

また、私は

+0

使用 ' _ + 'を使用して一致しないチャンクを収集するか、その逆の場合は' [^ _] + 'を使用して一致するチャンクを収集します。 –

+0

反復キャプチャグループは、最後の反復のみをキャプチャします。 http://www.regular-expressions.info/captureall.htmlを参照してください。 – Jarod42

+0

https://ideone.com/xZBk63を参照してください。 –

答えて

1

を使用してC++でそれをやっているあなたはstd::regex_match

を使用しているようにそれはあなたが(正規表現([^_]+)で)やりたいstd::regex_searchまたはstd::regex_iteratorを使用することができそうです

+0

あなたの '((*?)_)+'は 'A_B_C_D_E_F_G'と一致しません –

+0

regex_matchを使ってそれを行う方法がありますか?文字列が必要なもの(string_string_string _...など)であるかどうか最初にチェックし、1つの正規表現のみを使用してすべての部分文字列を取得します。 –

+0

@ВиталикБушаевいいえ、方法はありません。 '([^ _] +)'で 'std :: regex_search'があなたの必要に合わないところはわかりません。 –

関連する問題