1

私はこの文字列を持っています

hey {Bobby|Apple|Peter}, nice to meet you {David}

そしてこの正規表現:

(\{(\w+)(\|(\w+))*)\}

答え:

Bobby
Peter
David

ただし、「Apple」を取得していません。これを修正して同様に取得するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

1

繰り返しはグループでは機能しません。代わりに、文字列でfindを繰り返し使用してみてください。おそらく、最初にフィルターで除外し{Bobby|Apple|Peter}、そこから名前を取得してから、そこから名前を見つけ{David}て取得するのが最善でしょう。したがって、正規表現を使い続けると、2つの結果になります。または1つfind、次に|結果から分割します。

検索の正規表現:\{(\w+(?:\|\w+)*)\}、次にグループ1(中括弧内のすべて)を使用して結果を分割します。

于 2012-07-03T23:45:48.253 に答える
0

この問題を再現する最小限のコード全体を表示できますか?問題は、キャプチャされたグループをどのように反復しているかにある可能性があります。

于 2012-07-03T23:50:42.633 に答える