複数の繰り返しグループをキャプチャするにはどうすればいいですか? 質問する

複数の繰り返しグループをキャプチャするにはどうすればいいですか? 質問する

同じパターンの複数のグループをキャプチャする必要があります。次の文字列があるとします。

HELLO,THERE,WORLD

そして私は次のパターンを書きました

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

私がやりたいのは、すべての単語をキャプチャすることです。つまり、グループ 1 は「HELLO」、グループ 2 は「THERE」、グループ 3 は「WORLD」です。私の正規表現が実際にキャプチャしているのは、最後の単語「WORLD」だけです。

正規表現をテストしていますここそれを Swift で使用したいです (Swift で中間結果を取得して、それを使用できる方法が何かあるでしょうか?)

は使いたくありませんsplit。最後のグループだけでなく、パターンに一致するすべてのグループをキャプチャする方法を知る必要があります。

ベストアンサー1

パターン内に 1 つのグループがある場合、そのグループ内では 1 つの正確な結果しか得られません。キャプチャ グループがパターンによって繰り返される場合 (+周囲の非キャプチャ グループで量指定子を使用した場合)、それに一致する最後の値のみが保存されます。

言語の正規表現実装関数を使用して一致するものをすべて検索パターンの場合は、非キャプチャ グループのアンカーと量指定子を削除する必要があります (非キャプチャ グループ自体も省略できます)。

あるいは、正規表現を拡張して、結果で取得するグループごとに 1 つのキャプチャ グループをパターンに含めることもできます。

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

おすすめ記事