【问题标题】:Android Studio: Regex not workingAndroid Studio:正则表达式不起作用
【发布时间】:2015-01-16 14:00:46
【问题描述】:

我将我的项目从 Eclipse 迁移到 Android Studio,一切正常。在这个项目中,我有一个正则表达式,它应该在我从 API 获得的 json 对象中找到所有图像 url。

这是我的正则表达式:

Pattern pattern = Pattern.compile("https?:\\/\\/[^\"]*?\\.(png|jpe?g|img)");

            Matcher matcher = pattern.matcher(obj.toString());
            while(matcher.find()) {
                ImageBackgroundFetcher.getInstance(mActivity).addImageToLoadingQueue(matcher.group());
            }

obj 是我拥有的带有图像网址的 JSONObject。它看起来像下面,我想提取图像的 url(粗体标记部分) {"图片":"http:\/\/www.test.de\/media\/2015\/01\/16\/bildtitel.jpg"}

在我将项目从 Eclipse 迁移到 Android Studio 之后,这个 Regex 不再工作了。 matcher.find()-Method 没有返回 true,Android Studio 在正则表达式部分 "\\/\\/" 的代码中给了我一个警告,上面写着“冗余字符转义”

我已经用谷歌搜索了,但没有找到解决方案。任何解决问题的想法都会很棒,在此先感谢;)

【问题讨论】:

  • 不要转义正斜杠。
  • "redundant character escape" 显然首先要尝试的是,鉴于错误消息,删除字符转义?!之后您会收到什么错误消息?

标签: android regex eclipse


【解决方案1】:

您可以使用AS函数来检查Regex。

按快捷键:Alt+Enter → 检查正则表达式

【讨论】:

    【解决方案2】:

    好的,我能够解决这个问题。正确的正则表达式是:

    https?:\\\\/\\\\/[^\"]*?\\.(png|jpe?g|img)
    

    【讨论】:

      【解决方案3】:

      我一般用这个网站查:

      http://regexr.com/

      使用模式:

      (https?:\\/\\/.+(png|jpe?g|img))(?:")
      

      并捕获它应该工作的第一组。 只需检查java,转义\和/与我链接的站点不同

      使用你的表达方式,模式:

      https?:\/\/[^\\"]*?\\.(png|jpe?g|img)
      

      应该也可以。最后一个字符串不应再次转义。还要检查原始 eclipse 项目中的字符串!

      【讨论】:

      • 您好,感谢您的回答。我也使用这个网站进行检查,它告诉我我的正则表达式应该可以工作。但在 Android Studio 中它没有......但我已经能够解决这个问题。在下面查看我的答案;-)
      【解决方案4】:

      这与 Java 处理正则表达式的方式有关,它需要字符串文字。所以 \\ 对于单个 \

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-08
        相关资源
        最近更新 更多