有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

正则表达式Java字符串#contains()使用带转义字符的字符串#matches()

我需要一种使用matches实现contains函数的简单方法。我相信这是我的出发点:

xxx.matches("'.*yyy.*'");

但我需要使它成为一种通用的方法,并对我搜索的任何内容进行预处理,以便被匹配者接受!必须仅使用转义“\”字符完成此操作

假设一个字符串SEARCH_FOR可以包含一些必须是“regex转义”的特殊字符

String SEARCH_FOR="*.\\"
xxx.matches("'.*" + SEARCH_FOR + ".*'");

有捕获物吗?特殊情况?是否应考虑任何其他“特殊字符”


共 (1) 个答案

  1. # 1 楼答案

    你在找^{}

    这将为您转义特殊字符


    编辑:

    在阅读了这些评论之后,我真的希望您尝试一下Pattern.quote(yourString.toLowerCase()),因为听起来您一直在使用这个模式。引用(你的字符串)。toLowerCase()。如果DataNucleus正在应用正则表达式,那么使用\Q\E转义序列应该没有问题

    既然你真的需要它,".\\".replaceAll("(\\.|\\$|\\+|\\*|\\\\)", "\\\\\$1")输出\.\\ 这将转义.'s$'s、+'s*'s\'s。请注意,这一切的安全性现在都在你身上。如果您没有转义您需要转义的内容,或者转义错误,您将允许人们在您不期望的情况下在搜索词中使用正则表达式,或者它不会返回您期望的结果