-2

我是这个领域的新手,所以我对regex. 我的问题是这样的,我"div"在其中有一个他们的 is 一个"href"属性,最后他们的 is "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>

有什么建议么 ?

4

2 回答 2

1

如果使用正则表达式是您的最后选择,您可以这样做:

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

现场演示

解释

  • 因为您需要多行s标志来dot匹配换行符。
  • 然后检查打开div标签及其所有属性 <div[^>]*>
    • [^>]*零个或多个字符,但不是>
  • 那么我们应该匹配所有其他的东西,直到我们到达开始img标签.*
  • 之后,我们应该在src此处的属性之前遍历可能的属性或空格<img.*src
  • 然后捕获除"in之外的所有字符srcsrc=\"([^"]+)
  • 最后逃避所有事情,直到第一次出现结束div标签
于 2013-10-22T07:45:31.310 回答
0

我想我不能只通过一个 reg exp 来做到这一点

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

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

于 2013-10-22T08:37:20.313 回答