0

正規表現スプリッターを変更しようとしています。

私の式は単純です: 文字セットの 1 つ以上の出現に一致します:\s*[|()!=\s]+

この例を実行すると、次のようになります。

(output !==(not output)) | (output)
//output, not output, output

今、私は次のことを望んでいます=

上記の例をもう一度見ると、最初の が表示され=、次のように完全に一致するはずです。!==(not output)) | (

これはどのように行うことができますか?

4

1 に答える 1

0

それが後で使用することを意味するかどうかはわかりませんが、現在の入力では機能します

String data = "(output !==(not output)) | (output)";
Matcher m = Pattern.compile("(\\w+)\\s*(?=!?==)(.*)\\1").matcher(data);
//                           ^-group1          ^   ^-repeated group1
//                                             |group 2
while (m.find()) {
    System.out.println(m.group(2));//match from group 2
}

出力:

!==(not output)) | (
于 2013-04-14T17:09:28.763 に答える