【问题标题】:Replacing characters got from javascript替换从 javascript 获取的字符
【发布时间】:2014-11-11 14:14:15
【问题描述】:

我正在制作一个从 flickr 集中提取所有图片的程序。我在代码中发现每个图片链接都有一个大字符串,问题是这样的:

链接格式如下:

https:\/\/c2.staticflickr.com\/4\/3925\/14562233192_3fe2b8fe1b_s.jpg

但我无法删除“\”字符,尽管使用了“\”转义序列。

我的替换代码如下,ret包含很多用'\n'分隔的链接:

ret =ret.replaceAll("\\", "");

我到底忘记了什么?

我的错误堆栈跟踪是这样的:

 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)

【问题讨论】:

    标签: java regex string flickr replaceall


    【解决方案1】:

    使用 4 个斜杠而不是 2 个。像这样 - ret =ret.replaceAll("\\\\", "")。您需要 1 个用于 java,1 个用于正则表达式引擎,以及 2 个用于解析它字面意思(删除特殊含义)。

    【讨论】:

    【解决方案2】:

    \ 是正则表达式中的特殊字符,用于转义其他特殊字符。因此,要匹配\,您需要正则表达式为\\。由于您需要再次转义反斜杠(这次是针对 Java 字符串),您需要调用 ret =ret.replaceAll("\\\\", "");

    【讨论】:

    • 如果您阅读,那正是我所做的,但感谢您的尝试。
    • 哇,我确实打错了。用 4 ``s 修复它。
    猜你喜欢
    • 1970-01-01
    • 2011-10-29
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多