如何使用正则表达式来获取'img'标签?

eng*_*med 14 regex image html-parsing

我想img从这样的JSON数据中返回的文本中获取标记.我想从字符串中抓取这个:

<img class="img" src="https://fbcdn-photos-c-a.akamaihd.net/hphotos-ak-frc3/1239478_598075296936250_1910331324_s.jpg" alt="" />
Run Code Online (Sandbox Code Playgroud)

我必须使用什么正则表达式来匹配它?

我使用了以下内容,但它不起作用.

"<img[^>]+src\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>"
Run Code Online (Sandbox Code Playgroud)

ale*_*oot 17

您可以简单地使用此表达式来匹配img标记,如示例中所示:

<img([\w\W]+?)/>
Run Code Online (Sandbox Code Playgroud)

  • regexr.com抱怨关闭斜杠需要关闭,关闭斜杠本身是可选的,具体取决于它是HTML还是XHTML.更好的方法是:`<img([\ w\W] +?)[\ /]?>`,您怎么看? (4认同)

小智 10

你的正则表达式与字符串不匹配,因为它缺少结束/.

编辑 - 不,/没有必要,所以你的正则表达式应该有效.但你可以放松一点,如下.

略有修改:

 <img\s[^>]*?src\s*=\s*['\"]([^'\"]*?)['\"][^>]*?>
Run Code Online (Sandbox Code Playgroud)


hwn*_*wnd 7

请注意,出于各种原因,您不应使用正则表达式来解析HTML

<img\s+[^>]*src="([^"]*)"[^>]*>
Run Code Online (Sandbox Code Playgroud)

或者使用Jsoup......

String html = "<img class=\"img\" src=\"https://fbcdn-photos-c-a.akamaihd.net/
               hphotos-ak-frc3/1239478_598075296936250_1910331324_s.jpg\" alt=\"\" />";

Document doc = Jsoup.parse(html);
Element img = doc.select("img").first();
String src = img.attr("src");

System.out.println(src);
Run Code Online (Sandbox Code Playgroud)