如何匹配一切特殊字符集的最后一次出现?

时间:2013-04-14 16:47:16

标签: java regex

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

我的表达很简单:匹配一个或多个字符集的出现:\s*[|()!=\s]+

运行这个例子会给出:

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

现在我想要以下内容:“如果发生了=个字符,那么后面的所有内容都会匹配到最后一次出现的相同字符集。”

再次查看上面的示例,它可以看到第一个=,然后应该完全匹配以下内容:!==(not output)) | (

怎么可以这样做?

1 个答案:

答案 0 :(得分: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)) | (