繁体   English   中英

如何从字符串中提取图像网址?

[英]How to extract image url from a string?

我试图从字符串内部提取图像URL。 我正在使用Pattern和Matcher。 我正在使用正则表达式来匹配相同的内容。 每当我尝试调试代码时,matcher.matches()和matcher.find()都会导致错误。 我要附加图片网址和正则表达式以及我的代码。

Pattern pattern_name;
Matcher matcher_name;

String regex = "(http(s?):/)(/[^/]+)+\" + \"\\.(?:jpg|gif|png)";
String url = "http://www.medivision360.com/pharma/pages/articleImg/thumbnail/thumb3756d839adc5da3.jpg";

pattern_name = Pattern.compile(regex);
matcher_name = pattern_name.matcher(url);

matcher_name.matches();
matcher_name.find();

你已经在字符串连接中转义了双引号
所以正则表达式引擎看到这个(http(s?):/)(/[^/]+)+" + "\\.(?:jpg|gif|png)
在c ++解析字符串之后。

你可以解除它"(http(s?):/)(/[^/]+)+" + "\\\\.(?:jpg|gif|png)"
或者只是将它们连接在一起"(http(s?):/)(/[^/]+)+\\\\.(?:jpg|gif|png)"

如果表达总是在最后,我会建议:

([^/?]+)(?=/?(?:$|\?))

你似乎对正则表达式有一些问题, \\" + \\"应该来自你误认为正则表达式的一些代码。 该子模式需要一个引号,一个或多个空格,一个空格和另一个双引号才能出现在扩展名的前面。 它符合http://www.medivision360.com/pharma/pages/articleImg/thumbnail/thumb3756d839adc5da3" ".jpg

此外,开头有两个冗余捕获组,您不需要使用它们。

采用

String regex = "https?:/(?:/[^/]+)+\\.(?:jpg|gif|png)";

这个演示

Java演示

String rx = "https?:/(?:/[^/]+)+\\.(?:jpg|gif|png)";
String url = "http://www.medivision360.com/pharma/pages/articleImg/thumbnail/thumb3756d839adc5da3.jpg";
Pattern pat = Pattern.compile(rx);
Matcher matcher = pat.matcher(url);
if (matcher.matches()) {
    System.out.println(matcher.group());
}

请注意, Matcher#matches()需要完整的字符串匹配项,而Matcher#find()将找到部分匹配项,即较大字符串内的匹配项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM