有 Java 编程相关的问题?

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

用于转义oracle sql特殊字符的java正则表达式

我想转义所有的特殊字符是sql查询。所以我创建了这个正则表达式:

Pattern p1 = Pattern.compile("\\{ | \\} | \\\\ | \\, | \\& | \\? |"
            + " \\( | \\) | \\[ | \\] | \\- | \\; | \\~ | \\| | \\ $ | "
            + "\\! | \\< | \\> | \\* | \\% | \\_");
Matcher m1=p1.matcher(s);

现在我希望它遍历所有匹配项,并在其前面放置一个“\”字符。例如,如果字符串是:aa%aa$aa,我希望它是aa\%aa\$aa。我该怎么做


共 (2) 个答案

  1. # 1 楼答案

    如果您只想转义SQL字符,我建议您在Java中使用PreparedStatements,而不是尝试构建自己的转义器

    话虽如此,使用regex可以做到这一点,但并不容易

  2. # 2 楼答案

    你需要像这样用括号捕捉模式

    (a)(b)(c)
    

    字母可以用$+括号对的序数来表示

    例如,如果应用替换模式

    $1\$2$3
    

    它会给

    a\bca\bc
    

    在java中,这将成为

    String resultString = subjectString.replaceAll("(a)(b)(c)", "$1\\\\$2$3");