Android Studio:正则表达式不工作
我将我的项目从Eclipse迁移到Android Studio,一切都很顺利。在这个项目中,我有一个正则表达式,它可以在我从API获得的json对象中找到所有图像URL 这是我的正则表达式: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
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中,它并没有……但我已经能够解决这个问题。在下面查看我的答案;-)