繁体   English   中英

如何匹配直到最后一次出现特殊字符集的所有内容?

[英]How to match everything up to the last occurence of a special character set?

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

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

运行此示例将得出:

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

现在,我要执行以下操作:“如果出现一个=字符,则在后面匹配所有字符,直到最后一次出现同一字符集为止。”

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

怎么办呢?

我不确定这是否意味着以后使用,但对于您当前的输入,它是否有效

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)) | (

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM