本文主要是介绍Java中replaceFirst及replaceAll方法报错PatternSyntaxException: Unexpected internal error near index 1解决办法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天遇到的,我的字符串里包含形如D:\aaa\bbb的子串,我需要将其中的反斜杠\替换为其他字符。
开始我这样写:str.replaceAll("\\","target");
报错:
Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\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)
查找资料显示问题如下:
replaceAll 的第一个参数是正则表达式,故而要经过两次转义,一次Java、一次正则。因此就需要四个反斜杠才可以匹配一个反斜杠。
故改为str.replaceAll("\\\\","target");
即可。
这篇关于Java中replaceFirst及replaceAll方法报错PatternSyntaxException: Unexpected internal error near index 1解决办法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!