同じパターンの複数のグループをキャプチャする必要があります。次の文字列があるとします:
HELLO,THERE,WORLD
そして、私は次のパターンを書きました
^(?:([A-Z]+),?)+$
私がやりたいことは、すべての単語をキャプチャし、グループ1が「HELLO」、グループ2が「THERE」、グループ3が「WORLD」になるようにすることです。世界"。
私は正規表現をテストしています here とSwift(Swiftで中間結果を取得する方法があるかもしれません)それらを使用できますか?)
更新:split
を使用したくありません。最後のパターンだけでなく、パターンに一致したすべてのグループをキャプチャする方法が必要です。
パターンにグループが1つある場合、そのグループで正確な結果を1つだけ取得できます。キャプチャグループがパターンによって繰り返される場合(周囲の非キャプチャグループで+
量指定子を使用した場合)、それに一致する最後の値のみが格納されます。
言語の正規表現実装関数を使用して、パターンの一致するものをすべて検索する必要があります。その後、非キャプチャグループのアンカーと数量詞を削除する必要があります(そして、非キャプチャを省略できます)グループ自体も)。
または、正規表現を展開し、結果に含めるグループごとに1つのキャプチャグループをパターンに含めます。
^([A-Z]+),([A-Z]+),([A-Z]+)$
このようなものが必要だと思います。
b="HELLO,THERE,WORLD"
re.findall('[\w]+',b)
Python3ではどれが返されますか
['HELLO', 'THERE', 'WORLD']
回答のパラグラフ2の追加例を提供するだけです。 1つのグループを使用して3つの一致を取得するのではなく、1つの一致で3つのグループを取得することがどれほど重要かはわかりません。例えば、グルーヴィーで:
def subject = "HELLO,THERE,WORLD"
def pat = "([A-Z]+)"
def m = (subject =~ pat)
m.eachWithIndex{ g,i ->
println "Match #$i: ${g[1]}"
}
Match #0: HELLO
Match #1: THERE
Match #2: WORLD