Java是否有一种内置的方法来转义任意文本,以便它可以包含在正则表达式中?例如,如果我的用户输入“$5”,我希望精确匹配它,而不是在输入结束后输入“5”。


当前回答

从Java 1.5开始,是的:

Pattern.quote("$5");

其他回答

模式之间的差异。引用和Matcher。在我看到下面的例子之前,我不清楚

s.replaceFirst(Pattern.quote("text to replace"), 
               Matcher.quoteReplacement("replacement text"));

我想你想要的是Q$5\E。另请参阅Java5中引入的Pattern.quote(s)。

有关详细信息,请参阅Pattern javadoc。

Pattern.quote("blabla")工作得很好。

Pattern.quote()工作得很好。它用字符“\Q”和“\E”包围句子,如果它转义了“\Q”和“\E”。 然而,如果你需要做一个真正的正则表达式转义(或自定义转义),你可以使用以下代码:

String someText = "Some/s/wText*/,**";
System.out.println(someText.replaceAll("[-\\[\\]{}()*+?.,\\\\\\\\^$|#\\\\s]", "\\\\$0"));

该方法返回:Some/\s/wText*/\,**

示例代码和测试:

String someText = "Some\\E/s/wText*/,**";
System.out.println("Pattern.quote: "+ Pattern.quote(someText));
System.out.println("Full escape: "+someText.replaceAll("[-\\[\\]{}()*+?.,\\\\\\\\^$|#\\\\s]", "\\\\$0"));

从Java 1.5开始,是的:

Pattern.quote("$5");

^(否定)符号用于匹配不在字符组中的内容。

这是正则表达式的链接

下面是关于否定的图片信息: