私は次のパターンを持っています:
Pattern TAG = Pattern.compile("(<[\\w]+]>)|(</[\\w]+]>)");
| 注意してください。パターンで。
そして、このパターンで何らかの処理を行うメソッドがあります
private String format(String s){
Matcher m = TAG.matcher(s);
StringBuffer sb = new StringBuffer();
while(m.find()){
//This is where I need to find out what part
//of | (or) matched in the pattern
// to perform additional processing
}
return sb.toString();
}
正規表現で一致した OR の部分に応じて、さまざまな機能を実行したいと思います。パターンを 2 つの異なるパターンに分割し、それぞれに一致させることができることはわかっていますが、実際の正規表現ははるかに複雑であり、達成しようとしている機能がうまく機能するため、それは私が探している解決策ではありません。それを単一のループと正規表現で。だから私の質問はそれです:
ORのどの部分が正規表現に一致したかをJavaで見つける方法はありますか?
編集
m.group() 機能も認識しています。私の場合はうまくいきません。以下の例 では、ループの最初の反復で it が一致し
、2 番目の反復で on が出力さ<TAG>
れます。ただし、各反復でどの部分が一致したかを知る必要があります。</TAG>
<[\\w]+>
</[\\w]+>
static Pattern u = Pattern.compile("<[\\w]+>|</[\\w]+>");
public static void main(String[] args) {
String xml = "<TAG>044453</TAG>";
Matcher m = u.matcher(xml);
while (m.find()) {
System.out.println(m.group(0));
}
}