【发布时间】:2019-01-01 15:42:09
【问题描述】:
在我的 Java 程序中,我试图替换字符串中包含反斜杠的子字符串(paloalto\ 到 sanjose\)。但是,即使我使用双反斜杠来减轻反斜杠作为转义字符的影响,我仍然会收到以下错误:
Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 9
paloalto\
^
at java.util.regex.Pattern.error(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 Main.main(Main.java:8)
以下是我的代码:
String original = "paloalto\\adam paloalto\\jack paloalto\\justin";
System.out.println("original = " + original);
String sanjose = original.replaceAll("paloalto\\", "sanjose\\");
System.out.println("backgammon = " + sanjose);
【问题讨论】:
-
您需要四个反斜杠:两个用于正则表达式,两个用于编译器。但是你为什么要这样做?
-
@EJP 八个反斜杠。四个在正则表达式中,四个在替换中。 Java 文档说替换中的反斜杠可用于转义字符。
标签: java regex string replace substring