0

正規表現="..(group1).. | ..(group2).."があるとしましょう。

pattern.matcher(regex)
matcher.find()
// how can i access the result?? 
// i dont wanna use matcher.group(1) or matcher.group(2) 
// since i don't really know what will be the result.

あなたが見ることができるように、私は私の結果を得る方法を知りません。matcher.getResultedGroupのようなものを探しています。誰かが私が何をすべきか説明してもらえますか?

  • あなたが私の知識を拡大するための他の提案があれば、私は聞きたいです。
4

4 に答える 4

2

単一のキャプチャグループを使用でき、内部に非キャプチャグループがあります。

((?:group1)|(?:group2)) 
于 2012-05-28T22:24:23.890 に答える
1

繰り返しMatcher.start(groupNum)ます。groupNumそれはそうではありませんが、あなたが探しているもの0から始まります(それがあなたの表現全体であると仮定して)。0

それ以外の場合は、部分式全体をキャプチャグループに含めます((group1)|(group2)...)。内部グループの開始インデックスを外部グループと比較します。

于 2012-05-28T22:26:19.857 に答える
0

Javadochttp : //docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.htmlおよびhttp://docs.oracle.com/javase/6/docs/api/javaを参照してください。/util/regex/Matcher.html

たぶん、このような何かがうまくいくでしょう:

while(matcher.find()) {
    String groupMatch = matcher.group(groupIndex)
}

matcher.findは、正規表現に一致する文字列のすべてのサブシーケンス(サブストリング)を検索しようとします。

于 2012-05-28T22:24:59.947 に答える
0

必要がなければ、サブグループに入る必要はありません。実際の一致はグループ0:Matcher.group(0)または同等のものMatcher.group()です。リソースを保護するために、キャプチャしないグループを使用することをお勧めします。

于 2012-05-29T00:19:41.030 に答える