【问题标题】:How to remove more than one match in Java using replaceAll()?如何使用 replaceAll() 在 Java 中删除多个匹配项?
【发布时间】:2021-11-11 19:00:27
【问题描述】:

您好,我正在尝试使用 Java 中的 replaceAll 方法删除字符串中的两个或多个单词 但我一点也不擅长正则表达式,而且我做不到。 所以这里是代码:

    public static void main(String[] args) {
    String s= "@class::menu-select @id::calibration-content";
    System.out.println(s.replaceAll("[(@class::)(@id::)]",""));
}

但是当我运行它时,我得到的是以下文本 menu-eet brton-ontent 顺便说一句,我要删除的词是 @class::@id:: 有谁知道该怎么做? ¡提前致谢!

【问题讨论】:

    标签: java regex


    【解决方案1】:

    String#replaceAll 接受一个正则表达式,并且您正在向它传递一个您要替换的子字符串的字符类,这是不正确的。

    相反,您可以更改正则表达式以专门查找子字符串:

    System.out.println(s.replaceAll("@class::|@id::",""));
    

    这会产生以下输出:

    menu-select calibration-content
    

    请记住,从String 中删除子字符串的方法比正则表达式更有效。

    【讨论】:

      【解决方案2】:

      您使用的表达式包含[],它匹配中间的字符范围。只需使用类似的东西:

      System.out.println(s.replaceAll("@(class|id)::",""));
      

      【讨论】:

        【解决方案3】:

        这段代码应该可以工作

        public static void main(String[] args) {
            String s= "@class::menu-select @id::calibration-content";
            System.out.println(s.replaceAll("@class::|@id::", ""));
        }
        

        打印出来

        menu-select calibration-content
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-05-30
          • 2020-05-05
          • 2014-11-15
          • 1970-01-01
          • 2012-01-09
          • 2017-05-20
          • 1970-01-01
          相关资源
          最近更新 更多