私は文字列A_B_C_D_E_F_Gを持っており、すべての文字列A、B ..をいくつかの正規表現を使って配列に入れたいと思っています。私は試しました正規表現で繰り返しグループを取得する
((.*?)_)+
しかし、これは最後の繰り返しを格納するようです。一つの正規表現でそれらのすべてを得る方法はありますか?そうでなければ何を使うべきですか?
また、私は
私は文字列A_B_C_D_E_F_Gを持っており、すべての文字列A、B ..をいくつかの正規表現を使って配列に入れたいと思っています。私は試しました正規表現で繰り返しグループを取得する
((.*?)_)+
しかし、これは最後の繰り返しを格納するようです。一つの正規表現でそれらのすべてを得る方法はありますか?そうでなければ何を使うべきですか?
また、私は
を使用してC++でそれをやっているあなたはstd::regex_match
を使用しているようにそれはあなたが(正規表現([^_]+)
で)やりたいstd::regex_search
またはstd::regex_iterator
を使用することができそうです
あなたの '((*?)_)+'は 'A_B_C_D_E_F_G'と一致しません –
regex_matchを使ってそれを行う方法がありますか?文字列が必要なもの(string_string_string _...など)であるかどうか最初にチェックし、1つの正規表現のみを使用してすべての部分文字列を取得します。 –
@ВиталикБушаевいいえ、方法はありません。 '([^ _] +)'で 'std :: regex_search'があなたの必要に合わないところはわかりません。 –
使用 ' _ + 'を使用して一致しないチャンクを収集するか、その逆の場合は' [^ _] + 'を使用して一致するチャンクを収集します。 –
反復キャプチャグループは、最後の反復のみをキャプチャします。 http://www.regular-expressions.info/captureall.htmlを参照してください。 – Jarod42
https://ideone.com/xZBk63を参照してください。 –