Android Studio:正则表达式不工作

Android Studio: Regex not working

我将项目从 Eclipse 迁移到 Android Studio,一切正常。在这个项目中,我有一个正则表达式,它应该在我从 API.

获得的 json-object 中找到所有图像 urls

这是我的正则表达式:

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 是图像 urls 中的 JSONObject。看起来像下面这样,我想提取图像的 url (粗体标记部分) {"image":"http:\/\/www.test.de\/media\/2015\/01\/16\/bildtitel.jpg"}

在我将项目从 Eclipse 迁移到 Android Studio 之后,这个 Regex 不再工作。 matcher.find()-方法没有 return 正确,Android Studio 在正则表达式部分的代码中给了我一个警告 "\\/\\/" 上面写着 "redundant character escape"

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

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

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

我一般用这个网站查:

http://regexr.com/

使用模式:

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

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

使用你的表达式,模式:

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

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

您可以使用 AS 函数来检查正则表达式。

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

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