Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Studio:正则表达式不工作_Android_Regex_Eclipse - Fatal编程技术网

Android Studio:正则表达式不工作

Android Studio:正则表达式不工作,android,regex,eclipse,Android,Regex,Eclipse,我将我的项目从Eclipse迁移到Android Studio,一切都很顺利。在这个项目中,我有一个正则表达式,它可以在我从API获得的json对象中找到所有图像URL 这是我的正则表达式: Pattern pattern = Pattern.compile("https?:\\/\\/[^\"]*?\\.(png|jpe?g|img)"); Matcher matcher = pattern.matcher(obj.toString()); w

我将我的项目从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是我拥有的带有图像URL的JSONObject。如下所示,我想提取图像的url(粗体标记部分) {“image”:“http:\/\/www.test.de\/media\/2015\/01\/16\/bildtitel.jpg”}

在我将项目从Eclipse迁移到Android Studio之后,这个正则表达式就不再工作了。matcher.find()方法没有返回true,Android Studio在regex部分“\\/\\\\/”的代码中给了我一个警告,其中显示“冗余字符转义”


我已经在谷歌上搜索过了,但没有找到解决办法。任何解决问题的想法都会很好,提前谢谢;)

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

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

我通常使用此网站检查:

使用模式:

(https?:\\/\\/.+(png|jpe?g|img))(?:")
https?:\/\/[^\\"]*?\\.(png|jpe?g|img)
并捕获第一组它应该工作。 只需签入java,转义\和/与我链接的站点不同

使用您的表达式,模式:

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

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

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

按快捷键:Alt+Enter→ 检查regexp


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

不要转义正斜杠。
“冗余字符转义”
鉴于错误消息,显然首先要尝试的是删除字符转义?!在那之后,你会收到什么错误信息?嗨,谢谢你的回答。我也使用这个网站来检查,它告诉我我的正则表达式应该可以工作。但在Android Studio中,它并没有……但我已经能够解决这个问题。在下面查看我的答案;-)