日期:2014-05-17  浏览次数:20496 次

求助:正则表达式解析内容
源代码一:
<p class="brand"></p>
<a href="http://www.newegg.com.cn/Product/A19-227-2G8.htm"><img src="http://c1.neweggimages.com.cn/neweggpic2/neg/P144/A19-227-2G8.jpg?v=C1A36AC149B747A69089" title="Leadtek&#32;丽台" /></a>
</dt>
源代码二:
<p class="brand"><a href="..."></a></p>
<a href="http://www.newegg.com.cn/Product/A19-227-2G8.htm"><img src="http://c1.neweggimages.com.cn/neweggpic2/neg/P144/A19-227-2G8.jpg?v=C1A36AC149B747A69089" title="Leadtek&#32;丽台" /></a>
</dt>
源代码三:
<p class="brand"><a href="..."></a></p><p class="price"><a href="..."></a></p>
<a href="http://www.newegg.com.cn/Product/A19-227-2G8.htm"><img src="http://c1.neweggimages.com.cn/neweggpic2/neg/P144/A19-227-2G8.jpg?v=C1A36AC149B747A69089" title="Leadtek&#32;丽台" /></a>
</dt>

其实这三种源代码也差不多,根据页面不同里面元素有变,一般会出现此3种情况。
这一截源代码在网页上是出现多个的,而我想要获取的内容是:红色字体的两个链接。
另外有个要求:
开头必须从<p class="brand">开始,结束必须是</dt>
例如:(?is)(?<=<p[\s\S]*?class=""brand"">[\s\S]*?</p>).*?<a[\s\S]*?href=""([^""]*?)""[\s\S]*?><img[\s\S]*?src=""([^""]*?)""[\s\S]*?/?></a>[\s\S]*?</dt>
我上面写的这个测试不了...会导致机器卡死...请帮忙写一个快速匹配的,谢谢。

------解决方案--------------------
(?is)<p\sclass=(['"]?)brand\1>.*?</p>.*?<a\shref=(['"]?)(?<a>[^'"]*?)\2><img\ssrc=(['"]?)(?<img>.*?)\3[^>]*?></a>\n</dt>
------解决方案--------------------
探讨
有个问题请教下,问什么用这个正则来解析内容的时候,会出现一种情况,一直在连接中...并且还会出现假死。