正则表达式匹配div中的img src的内容

时间:2013-10-22 06:10:42

标签: regex

我是这个领域的新人,所以我对regex一无所知。我的问题是这样的 我的内容为"div",其属性为"href",最后为"img"。我希望regex"img"源内容相匹配,如果该特定内容的url匹配,我可以通过该内容获取该内容的数据。

<div class="test_list3">
   <a href="/photo/tst_t_45288/6782/12/1/">`<img  src="http://example.com/1700/tst_t_45288/m2/tst_t_45288_1.jpg" title="tst-t  1" alt="tst-t 1" /></a><br /><a href="http://example.com/1700/tst_t_45288/tst_t_45288_1.jpg"  target="_blank">jpg file</a>
</div>

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

如果使用正则表达式是最后一个选择,您可以使用:

(?s)<div[^>]*>.*<img.*src=\"([^"]+)\".*<\/div>

Live demo

说明

  • 因为您需要多行s标记才能使dot与新行匹配。
  • 然后按div检查打开<div[^>]*>标记及其所有属性
    • [^>]*零个或多个字符,但不是>
  • 然后我们应该匹配所有其他内容,直到img
  • 打开.*标记为止
  • 之后我们应该在src属性<img.*src之前查看可能的属性或空格
  • 然后捕获"src以外的所有字符:src=\"([^"]+)
  • 并最终逃脱所有事情,直到第一次发生关闭div标签

答案 1 :(得分:0)

我认为我不能只通过一个reg exp

来做到这一点

1.使用<div[^>]*>[^<>]*(((?'Open'<div[^>]*>)[^<>]*)+((?'-Open'</div>)[^<>]*)+)*(?(Open)(?!))</div>获取两个div标签之间的内容。

2.使用其他reg exp匹配step1中的匹配字符串,并获取img标记之间的内容。