我正在制作一个从flickr集中提取所有图片的程序。我在代码中发现了一个包含每个图片链接的大字符串,问题是:
链接具有下一种格式:
https:\/\/c2.staticflickr.com\/4\/3925\/14562233192_3fe2b8fe1b_s.jpg
但是我无法删除'\'字符,尽管使用了“\”转义序列。
我的替换代码如下,ret包含很多以'\ n'分隔的链接:
ret =ret.replaceAll("\\", "");
世界上我忘记了什么?
我的错误stackTrace是这样的:
Exception in thread "AWT-EventQueue-0" 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)
答案 0 :(得分:3)
使用4个斜杠而不是2.像这样 - ret =ret.replaceAll("\\\\", "")
。你需要1个用于java,一个用于正则表达式引擎,两个用于解析字面意思(删除特殊含义)。
答案 1 :(得分:1)
\
是正则表达式中的特殊字符,用于转义其他特殊字符。因此,要匹配\
,您的正则表达式必须为\\
。由于您需要再次转义反斜杠(这次是Java字符串),您需要调用ret =ret.replaceAll("\\\\", "");
。