1. ホーム
  2. regex

[解決済み] 複数の繰り返しグループを捕捉するには?

2022-07-14 05:49:15

質問

同じパターンを持つ複数のグループをキャプチャしたい。例えば、以下のような文字列があったとします。

HELLO,THERE,WORLD

そして、次のようなパターンを書きました。

^(?:([A-Z]+),?)+$

グループ 1 は "HELLO"、グループ 2 は "THERE"、グループ 3 は "WORLD" というように、すべての単語を取得することです。私の正規表現が実際に捕捉しているのは、最後の1つである "WORLD" だけです。

私の正規表現をテストしています。 ここで をテストしていて、Swiftでそれを使いたいのです(たぶん、Swiftに中間結果を得る方法があるので、それを使うことができますか?)

UPDATE: 私は、このような場合 split . 私はちょうど今、最後の1つだけでなく、パターンに一致するすべてのグループをキャプチャする方法を必要としています。

どのように解決するのですか?

パターン内の1つのグループに対して、そのグループ内の1つの正確な結果しか得られません。もし、捕捉グループがパターンによって繰り返される場合、(あなたが使用した + を使った場合)、それにマッチする最後の値だけが保存されます。

言語の正規表現実装関数を使って すべてのマッチを見つける のパターンの場合、アンカーと非捕捉グループの量詞を削除する必要があります (非捕捉グループ自体も省略できます)。

または、正規表現を拡張して、結果に取得したいグループごとに1つの捕捉グループを含むようにパターンを設定します。

^([A-Z]+),([A-Z]+),([A-Z]+)$