RegExp - 替换精确字符串

时间:2018-01-21 15:21:07

标签: java regex string replaceall

我需要正则表达式的帮助,我试图将“Inc”替换为“LLC”以获得许多字符串。

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

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

但结果不正确,更换后删除了一个字符:

Exp:CONSULTANTS,INC。(“ABC”)==> CONSULTANTS,LLC(“ABC”)//“。”被删除了。

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

1 个答案:

答案 0 :(得分:8)

如果\b^等字符串中没有特殊文字,则可以()使用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将返回<div class="input-group"> <asp:TextBox ID="txt_Product" runat="server" CssClass="form-control" placeholder="Product"></asp:TextBox> <div class="input-group-append"> <asp:LinkButton ID="LinkButton3" runat="server" CssClass="btn btn-outline-primary"> <i class="ICON-copyright"></i> </asp:LinkButton> </div> ,与上述正则表达式相同。