Java 在特定字符之前插入字符

Java 在特定字符之前插入字符,java,regex,string,Java,Regex,String,我一直在研究正则表达式,以及如何在Java中使用它来解决我必须解决的问题。我必须在每个前插入\。这就是我所拥有的: public class TestExpressions { public static void main (String args[]) { String test = "$('a:contains(\"CRUCERO\")')"; test = test.replaceAll("(\")","$1%"); System

我一直在研究正则表达式,以及如何在Java中使用它来解决我必须解决的问题。我必须在每个前插入\。这就是我所拥有的:

public class TestExpressions {
    public static void main (String args[]) {

        String test = "$('a:contains(\"CRUCERO\")')";
        test = test.replaceAll("(\")","$1%");
        System.out.println(test);
    }
}
输出为:

$('a:contains("%CRUCERO"%)')
我想要的是:

$('a:contains(\"CRUCERO\")')

我已更改\\的%s,但出现错误StringIndexOutofBounds不知道原因。如果有人能帮助我,我将不胜感激,提前谢谢。

如果您想在报价前插入退格,请使用:

test = test.replaceAll("(\")","\\\\$1"); // $('a:contains(\"CRUCERO\")')
或者,如果要避免已转义的引号,请使用负查找:

String test = "$('a:contains(\\\"CRUCERO\")')";
test = test.replaceAll("((?<!\\\\)\")","\\\\$1"); // $('a:contains(\"CRUCERO\")')

如果要在报价前插入退格,请使用:

test = test.replaceAll("(\")","\\\\$1"); // $('a:contains(\"CRUCERO\")')
或者,如果要避免已转义的引号,请使用负查找:

String test = "$('a:contains(\\\"CRUCERO\")')";
test = test.replaceAll("((?<!\\\\)\")","\\\\$1"); // $('a:contains(\"CRUCERO\")')
说明:

说明:

我必须在每个

您可以尝试使用replace,它自动转义所有regex元字符,并且在替换部分中不使用任何特殊字符,所以您可以简单地使用要放入匹配部分的字符串文本

因此,让我们用\literal替换。你可以这样写

test = test.replace("\"", "\\\"");
我必须在每个

您可以尝试使用replace,它自动转义所有regex元字符,并且在替换部分中不使用任何特殊字符,所以您可以简单地使用要放入匹配部分的字符串文本

因此,让我们用\literal替换。你可以这样写

test = test.replace("\"", "\\\"");

如果您的目标是java字符串的转义文本,那么代替正则表达式,请考虑使用

String escaped = org.apache.commons.lang.StringEscapeUtils.
   escapeJava("$('a:contains(\"CRUCERO\")')");
System.out.println(escaped);
输出:

$('a:contains(\"CRUCERO\")')

javadoc:

如果你的目标是java字符串的转义文本,那么代替正则表达式,考虑使用

String escaped = org.apache.commons.lang.StringEscapeUtils.
   escapeJava("$('a:contains(\"CRUCERO\")')");
System.out.println(escaped);
输出:

$('a:contains(\"CRUCERO\")')
JavaDoc: