java如何从中生成正则表达式。replaceAll(字符串正则表达式,字符串替换)对用户输入是否安全?
在这样的程序中:
String userInput = "[]";
String str = "Hello World[]!";
String replacement = "";
str = str.replaceAll(userInput, replacement);
System.out.print(str);
我得到一个错误:
Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 1
[]
但是我想要输出:
Hello World!
有没有办法让用户输入对replaceAll安全?假设userInput是:[]
。我需要如何处理字符串以始终替换字符串,而不是字符串的含义
# 1 楼答案
可以显式^{} 输入字符串:
# 2 楼答案
如果不希望用户的文本被解释为正则表达式,只需使用
replace
而不是replaceAll
请注意,它将替换目标的所有出现次数。这个名字有点不幸。下面是
String#replace*
方法的总结:replace
:替换所有逐字出现的内容李>replaceFirst
:替换第一个正则表达式匹配项李>replaceAll
:替换所有正则表达式匹配项李>