0

我正在尝试修改我的正则表达式拆分器。

我的表达很简单:匹配一个或多个出现的字符集:\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 回答