マッチの一部を破棄する正規表現を取得するにはどうすればよいですか?Regex - マッチを破棄する方法
public class main {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("(?<=b)([xyz])(?:a*?)c");
String string = "abyaacbxaaac";
Matcher matcher = pattern.matcher(string);
while(matcher.find()){
System.out.println(matcher.group());
}
}
}
出力はここにある:
はyaac
xaaac
私は出力にそれを欲しいだけy
と私は実行x
System.out.println(matcher.group());
すなわち、一致するものを破棄する。(?:a*?)
P.S.
は、私は自分自身でx
とy
を取得するためにmatcher.group(1)
を使用することができます知っているが、私は唯一の特定のグループにアクセスすることなく出力x
とy
にマッチ全体をしたいと思います。
「捨てる」とは、「1回のマッチ操作でテキストの不連続部分を一致させる」という意味です。それはあなたがルックアラウンドに頼ることができるとき、それは不可能です。またはグループをキャプチャし、さらに後処理します。または、置換アプローチを使用します。 –