【问题标题】:RegExp - Replace exact String [duplicate]RegExp - 替换确切的字符串[重复]
【发布时间】:2023-03-21 21:37:01
【问题描述】:

我需要正则表达式方面的帮助,我正在尝试将许多字符串的“Inc”替换为“LLC”。

我在java中使用了这段代码:

String newValue = newValue.replaceAll("(?i)Inc[^\\w]","LLC");

但是结果不正确,替换后去掉一个字符:

Exp: CONSULTANTS, INC. ("ABC") ==> CONSULTANTS, LLC ("ABC") // "."已删除。

请注意,我使用 [^\w] 来防止在“include”等句子中替换“inc”。

【问题讨论】:

    标签: java regex string replaceall


    【解决方案1】:

    如果字符串中没有像^() 这样的特殊文字,您可以将\b 用于word boundaries

    String s = "include inc".replaceAll("(?i)\\binc\\b", "LLC");
    System.out.println(s); // (?i) is for case insensitive.
    

    如果您使用特殊字符代替inc(如^inc),上述方法将失败。您可以使用Pattern.quote(s) 使其工作。

    如果有特殊字符,则可以使用带引号的文字\Q...\E。使用引用文字的实用方法:

    public static String replaceExact(String str, String from, String to) {
        return str.replaceAll("(?<!\\w)\\Q" + from + "\\E(?!\\w)", to);
    }
    

    注意:Pattern.quote("wor^d") 将返回 \\Qwor^d\\E,这与上面的正则表达式相同。

    【讨论】:

      猜你喜欢
      • 2015-10-20
      • 2017-01-18
      • 2013-08-07
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 2014-12-11
      • 1970-01-01
      • 2020-06-04
      相关资源
      最近更新 更多