我有一个正在迭代的运算符字符串数组。当我找到 strLine
中存在的字符串时,我将其第一个实例替换为空白字符串。当我到达 {
时,我收到 java.util.regex.PatternSyntaxException:非法重复
。
现在,我知道 {
是一个特殊的 java 运算符,因此这就是它失败的原因。使用我现在的设置来逃避这个角色的最佳方法是什么?
String[] operators = {".", ",", "{", "}", "!", "++", "--", "*", "/", "%", "+", "-", "<"}
String strLine = "for (int count = input.length(); count > 0; count--) {";
strLine = strLine.trim();
for (int i = 0; i < operators.length; i++) {
if(strLine.contains(operators[i])) {
strLine = strLine.replaceFirst(operators[i]+"\\s*", "");
System.out.println("Removal of: " + operators[i]);
System.out.println("Sentence after removal: " + strLine);
}
}
最佳答案
您应该能够使用 java.util.regex.Pattern.quote 转义特殊字符
通过改变
strLine = strLine.replaceFirst(operators[i]+"\\s*", "");
至
strLine = strLine.replaceFirst(Pattern.quote(operators[i])+"\\s*", "");
关于java - 正则表达式非法重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13737082/