私はこの文字列を持っています
hey {Bobby|Apple|Peter}, nice to meet you {David}
そしてこの正規表現:
(\{(\w+)(\|(\w+))*)\}
答え:
Bobby
Peter
David
ただし、「Apple」を取得していません。これを修正して同様に取得するにはどうすればよいですか?
ありがとう!
私はこの文字列を持っています
hey {Bobby|Apple|Peter}, nice to meet you {David}
そしてこの正規表現:
(\{(\w+)(\|(\w+))*)\}
答え:
Bobby
Peter
David
ただし、「Apple」を取得していません。これを修正して同様に取得するにはどうすればよいですか?
ありがとう!
繰り返しはグループでは機能しません。代わりに、文字列でfindを繰り返し使用してみてください。おそらく、最初にフィルターで除外し{Bobby|Apple|Peter}
、そこから名前を取得してから、そこから名前を見つけ{David}
て取得するのが最善でしょう。したがって、正規表現を使い続けると、2つの結果になります。または1つfind
、次に|
結果から分割します。
検索の正規表現:\{(\w+(?:\|\w+)*)\}
、次にグループ1(中括弧内のすべて)を使用して結果を分割します。
この問題を再現する最小限のコード全体を表示できますか?問題は、キャプチャされたグループをどのように反復しているかにある可能性があります。