0

一致することがわかったグループのみをどのように返しますか?

私はこの正規表現を持っています:

".*>(\\d+.*)\\s.*\\(.*</|>(\\d+.+)<"

私が走るとき:

   Pattern p = Pattern.compile(regex);
   Matcher m = p.matcher(comparisonString);

   if(m.find() == true){
           System.out.println(m.group(1));
   }

式の2番目の部分(「OR」演算子の後の式)が一致するたびに、nullが返されます。二次式(「OR」の後の式)が一致するたびに一致するグループを返すにはどうすればよいですか?

4

1 に答える 1

2

キャプチャグループを使用する必要があります。

Pattern pattern = Pattern.compile("(regexToMatch1)|(regexToMatch2)");
...
read in stuff here
...
Matcher matcher = pattern.matcher(yourString);
if (matcher.matches()) {
    String firstString  = matcher.group(1);
    String secondString = matcher.group(2);
}

次に、不要なグループを破棄します。

ここでの良い例:http: //javamex.com/tutorials/regular_expressions/capturing_groups.shtml

編集:待ってください、私はあなたが何を求めているのか理解していないと思います。あなたのグループは一致しますが、グループはnullですか?matcher.group(#);の2番目のグループを参照する必要があります。電話。

于 2012-04-17T21:06:50.947 に答える