1

のような複数の単語を含む文字列がありますstr1, str2, str3, ... strN。単語数はいくつでもかまいませんが、正規表現を書いている時点では不明です。

文字列全体に一致し、グループごとに 1 つの単語をキャプチャする正規表現を作成することは可能ですか? つまり、次のグループがキャプチャされます。

グループ 1: str1
...
グループ N: strN

原因:この文字列は、より大きな文字列の一部です。大きな文字列の他の要素は、正規表現を使用してキャプチャできます。正規表現を使用して大きな文字列を解析し、複数の単語を含む文字列を 1 つのグループにキャプチャできます。次に、このグループを他のグループに分割できstr(s)ます。分割されていない大きな文字列全体の正規表現を使用したソリューションが存在する場合、よりエレガントになると思います。

4

2 に答える 2

4

入力文字列が呼び出された場合input:

final String[] groups = input.split("\\s*,\\s*");

groups配列にはすべての一致が含まれます。

于 2012-01-07T12:22:57.753 に答える
0

非常によく似たことができます: 1 つのグループだけで正規表現を書き、そのグループのすべての一致をチェックします。Java では、次のようになります。

    Pattern p = Pattern.compile("\\b(\\w+)\\b(?:,\\s)*");
    Matcher m = p.matcher("str1, str2, str3, ... strN");
    while(m.find()){
        System.out.println(m.group(1));
    }

結果は次のとおりです。

str1
str2
str3
...
strN

純粋な正規表現は\b(\w+)\b(?:,\s)*で、(?:は非キャプチャ グループです (グループとしてカウントされません)。

于 2012-01-07T12:33:29.903 に答える