正则表达式Java字符串#contains()使用带转义字符的字符串#matches()
我需要一种使用matches
实现contains
函数的简单方法。我相信这是我的出发点:
xxx.matches("'.*yyy.*'");
但我需要使它成为一种通用的方法,并对我搜索的任何内容进行预处理,以便被匹配者接受!必须仅使用转义“\”字符完成此操作
假设一个字符串SEARCH_FOR
可以包含一些必须是“regex转义”的特殊字符
String SEARCH_FOR="*.\\"
xxx.matches("'.*" + SEARCH_FOR + ".*'");
有捕获物吗?特殊情况?是否应考虑任何其他“特殊字符”
# 1 楼答案
你在找^{} 吗
这将为您转义特殊字符
编辑:
在阅读了这些评论之后,我真的希望您尝试一下
Pattern.quote(yourString.toLowerCase())
,因为听起来您一直在使用这个模式。引用(你的字符串)。toLowerCase()。如果DataNucleus正在应用正则表达式,那么使用\Q
和\E
转义序列应该没有问题既然你真的需要它,
".\\".replaceAll("(\\.|\\$|\\+|\\*|\\\\)", "\\\\\$1")
输出\.\\
这将转义.'s
、$'s
、+'s
、*'s
和\'s
。请注意,这一切的安全性现在都在你身上。如果您没有转义您需要转义的内容,或者转义错误,您将允许人们在您不期望的情况下在搜索词中使用正则表达式,或者它不会返回您期望的结果