java - 正则表达式非法重复

标签 java

我有一个正在迭代的运算符字符串数组。当我找到 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/

相关文章:

java - 运行时代码生成和编译

java - Java 6/1.6 OS X 10.10 Yosemite 的 JVM 路径在哪里?

java - 使用 Apache POI 库检索 excel 中属性(列)的唯一值列表

Java - 套接字和 Swing

java - 如果我在 JPopupMenu 外部单击,它不会关闭

java - 通过事件处理插入图像?

java - 如何将 UI 中输入的值调用到 java 类?

java - 了解正则表达式中的 `+`

javax.net.ssl.SSLHandshakeException : sun. security.validator.ValidatorException : PKIX path building failed happens on one machine, 但不是另一个

java - 如何在 C# 中使用 WebDriver 获取指定元素的屏幕截图