正则表达式如何在Java中为正则表达式转义文本 1 月,2 周 Questions & Answers 228359 Java是否有一种内置的方法来转义任意文本,以便将其包含在正则表达式中?例如,如果我的用户输入“$5”,我希望完全匹配它,而不是在输入结束后输入“5”
# 1 楼答案 响应可能已经太晚了,但您也可以使用Pattern.LITERAL,这将在格式化时忽略所有特殊字符: Pattern.compile(textToFormat, Pattern.LITERAL);
# 2 楼答案 要获得受保护的图案,您可以将所有符号替换为“\\\\”,数字和字母除外。然后你可以在保护模式中加入你的特殊符号,使这个模式不像愚蠢的引用文本,而是真正像一个模式,而是你自己的。没有用户特殊符号 public class Test { public static void main(String[] args) { String str = "y z (111)"; String p1 = "x x (111)"; String p2 = ".* .* \\(111\\)"; p1 = escapeRE(p1); p1 = p1.replace("x", ".*"); System.out.println( p1 + "-->" + str.matches(p1) ); //.*\ .*\ \(111\)-->true System.out.println( p2 + "-->" + str.matches(p2) ); //.* .* \(111\)-->true } public static String escapeRE(String str) { //Pattern escaper = Pattern.compile("([^a-zA-z0-9])"); //return escaper.matcher(str).replaceAll("\\\\$1"); return str.replaceAll("([^a-zA-Z0-9])", "\\\\$1"); } }
# 1 楼答案
响应可能已经太晚了,但您也可以使用
Pattern.LITERAL
,这将在格式化时忽略所有特殊字符:# 2 楼答案
要获得受保护的图案,您可以将所有符号替换为“\\\\”,数字和字母除外。然后你可以在保护模式中加入你的特殊符号,使这个模式不像愚蠢的引用文本,而是真正像一个模式,而是你自己的。没有用户特殊符号
# 3 楼答案
自Java 1.5, yes起: