Java是否有一种内置的方法来转义任意文本,以便它可以包含在正则表达式中?例如,如果我的用户输入“$5”,我希望精确匹配它,而不是在输入结束后输入“5”。
当前回答
^(否定)符号用于匹配不在字符组中的内容。
这是正则表达式的链接
下面是关于否定的图片信息:
其他回答
我想你想要的是Q$5\E。另请参阅Java5中引入的Pattern.quote(s)。
有关详细信息,请参阅Pattern javadoc。
模式之间的差异。引用和Matcher。在我看到下面的例子之前,我不清楚
s.replaceFirst(Pattern.quote("text to replace"),
Matcher.quoteReplacement("replacement text"));
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"));
^(否定)符号用于匹配不在字符组中的内容。
这是正则表达式的链接
下面是关于否定的图片信息:
这时响应可能为时已晚,但您也可以使用Pattern。LITERAL,它会在格式化时忽略所有特殊字符:
Pattern.compile(textToFormat, Pattern.LITERAL);
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 在Jar文件中运行类
- 带参数的可运行?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 在Java流是peek真的只是调试?
- Recyclerview不调用onCreateViewHolder
- 将JSON字符串转换为HashMap