Java的;字符串replaceAll给出错误

时间:2017-05-26 14:04:31

标签: java regex

我想从"{下面替换String

public static void main(String args[]){  
    String input="Subtitle,\"{\"key\": \"IsReprint\", \"value\":\"COPY\"}";

    input=input.replaceAll("\"{", "{"));        

    System.out.println("String ::::"+input);
}

我收到了这个错误:

Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 1
    \"{
     ^

3 个答案:

答案 0 :(得分:0)

您有两种方式:

首先你必须使用{转义\\{,因为replaceAll使用正则表达式,所以你必须逃避"{

input=input.replaceAll("\"\\{", "{");   

如果您没有这个复杂的正则表达式,那么第二个是使用replace

input=input.replace("\"{", "{"); 

答案 1 :(得分:0)

replaceAll以正则表达式作为参数。 {在正则表达式中具有特殊含义,因此必须通过执行

来逃避{
input=input.replaceAll("\"\\{", "{");  

或使用replace,它不会将正则表达式作为参数。

input=input.replace("\"{", "{");   

答案 2 :(得分:0)

你没有逃避" {"当你调用replaceAll时,字符正确。

你需要使用"两个斜线" \\在任何正则表达式(regExp)之前。

以下是一个例子:

public static void main(String args[]){
    String input="Subtitle,\"{\"key\": \"IsReprint\", \"value\":\"COPY\"}";

    System.out.println(input.replaceAll("\\{", "*"));
}

我的例子取代了" {"带*的字符:

"\\{", "*"

正在运行,您将获得输出:

Subtitle,"*"key": "IsReprint", "value":"COPY"}

输入:

String input="{{ }}";

您获得了输出:

** }}