微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java中带有*的正则表达式分组和replaceAll会重复替换

如何解决Java中带有*的正则表达式分组和replaceAll会重复替换

可能.*会给您“完全匹配”,然后将匹配减少为“空匹配”(但仍然是匹配)。尝试(.+)(^.*$)代替。两者都按预期工作。

在regexinfo中,星的定义如下:

*(星号)-将上一个项目重复零次或多次。贪婪,因此在尝试进行与前一个项目的匹配较少的置换之前,将匹配尽可能多的项目,直到前一个项目根本不匹配。

解决方法

我在Java中使用Rexexp时遇到问题。示例代码写出了ABC_012_suffix_suffix,我期望它能输出ABC_012_suffix

    Pattern rexexp  = Pattern.compile("(.*)");
    Matcher matcher = rexexp.matcher("ABC_012");
    String  result  = matcher.replaceAll("$1_suffix");

    System.out.println(result);

我知道replaceAll会替换所有匹配的组,问题是为什么此regexp组在Java中的(.*)字符串上匹配两次ABC_012

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。