使用replaceAll时出现Java错误(" + - "," - ")

时间:2016-10-05 19:03:34

标签: java patternsyntaxexception

我尝试使用String.replaceAll,但我收到了错误消息:

这是我的代码:

public static String signSimplify (String str) {
    String strr = str.replaceAll("--", "+");
    String strr2 = strr.replaceAll("-+", "-");
    String strr3 = strr2.replaceAll("+-", "-");
    return strr3;
}

并且,执行时,我收到以下错误:

Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0
+-
^
    at java.util.regex.Pattern.error(Unknown Source)
    at java.util.regex.Pattern.sequence(Unknown Source)
    at java.util.regex.Pattern.expr(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.util.regex.Pattern.<init>(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.lang.String.replaceAll(Unknown Source)
    at fr.genius.main.Main.signSimplify(Main.java:108)
    at fr.genius.main.Main.calcTrinome(Main.java:88)
    at fr.genius.main.Main.main(Main.java:69)`

我不明白为什么我不能使用replaceAll(&#34; + - &#34;,&#34; - &#34;)但我可以在+和 - 时使用反转。

3 个答案:

答案 0 :(得分:2)

如果您不想要或不需要正则表达式,只需使用replace()代替replaceAll(),它就会像您预期的那样工作。

答案 1 :(得分:1)

Java中的

replaceAll将要替换的文本视为正则表达式。你需要逃避+。

str.replaceAll("\\+-", "-")

答案 2 :(得分:0)

使用以下技术替换:

String url="abc+-abc";
System.out.println(url.replaceAll("\\+-", "-"));