-1

(abc|def)( ?(\\d+|(?:(?!\\1)[a-z])+)?)*私は完全に主題に一致する次の正規表現を持っていますabc123 456
ここで、すべてのパーツabc123、および456を取得します。

私は次のコードを使用します:

Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(subject);

while(m.find())
{
    System.out.println(m.group());
}

しかし、私はしか得られませんabc123 456

どんなアイデアでも大歓迎です。

4

2 に答える 2

1

の代わりに、各グループを個別に取得する必要がありm.group()ます。javadocには、m.group()と同等であると記載m.group(0)されており、バージョンを使用して個々のグループにアクセスできますm.group(int)。したがって、次のアサーションは、期待どおりにグループ化を反映する必要があります。

Assert.assertEquals("abc", m.group(1));
Assert.assertEquals("123", m.group(2));
Assert.assertEquals("456", m.group(3));
于 2010-08-09T23:55:46.100 に答える
0

上記のコメントで説明されている解決策を使用しました:

はい、動作しますが、正規表現を単純化できることに気付きました。abc | defはコマンドであり、スペースで区切られたパラメーターがあります。そして、私はそれらを取得する方法を探しています。しかし、コマンドを切り取ってスペースで分割する方が簡単だと思いますね。

于 2010-08-25T13:54:03.793 に答える