关于正则同时获取多个数组的问题,求指教。
<div id="" class=""><table align="center" width="1040" border="0" cellpadding="0" cellspacing="0" style="border-width:0px;">
<tr valign="top">
<td width="50%" style="border-width:0px;">
<table border="0" cellpadding="2" cellspacing="0" style="table-layout: fixed;">
<tr>
<td style="width:400px;"><b>商品名称</b></td>
<td style="width:100px;"><b>价格</b></td>
</tr>
<tr>
<td class="first-cell" title="ID: 2568 | 货号: INH002568"><div style="width:400px;height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">商品名称1</div></td>
<td align="right">
1111.00 <span class="noprint">
<a href="javascript:addToCart('2568');"><img src="themes/hope2013/images/btn_cart.gif" width="21" height="18" border="0" align="absmiddle" /></a>
<span>
</td>
</tr>
<tr>
<td class="first-cell" title="ID: 2459 | 货号: INH002459"><div style="width:400px;height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">商品名称2</div></td>
<td align="right">
2222.00 <span class="noprint">
<a href="javascript:addToCart('2459');"><img src="themes/hope2013/images/btn_cart.gif" width="21" height="18" border="0" align="absmiddle" /></a>
<span>
</td>
</tr>
</table>
</div>$marray = StringRegExp($data, '<(?i)td.*?ID: (\d{1,8}).*?><(?i)div.*?>(.*?)</(?i)div>', 3)我本意是获取商品的“ID”和“商品名称”,上面这段正则在Au3.REHelper里测试也能获取到,但是在Autoit里总是提示无效的数组。我也不知道哪里出错了,求大神指教。 #include <array.au3>
Dim $data = '<div id="" class="">' & @CRLF & _
'<table align="center" width="1040" border="0" cellpadding="0" cellspacing="0" style="border-width:0px;">' & @CRLF & _
'<tr valign="top">' & @CRLF & _
' <td width="50%" style="border-width:0px;">' & @CRLF & _
' <table border="0" cellpadding="2" cellspacing="0" style="table-layout: fixed;">' & @CRLF & _
' <tr>' & @CRLF & _
' <td style="width:400px;"><b>商品名称</b></td>' & @CRLF & _
' <td style="width:100px;"><b>价格</b></td>' & @CRLF & _
' </tr>' & @CRLF & _
' <tr>' & @CRLF & _
' <td class="first-cell" title="ID: 2568 | 货号: INH002568"><div style="width:400px;height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">商品名称1</div></td>' & @CRLF & _
' <td align="right">' & @CRLF & _
' 1111.00 <span class="noprint">' & @CRLF & _
' <a href="' & "javascript:addToCart('" & " 2568'" & ');"><img src="themes/hope2013/images/btn_cart.gif" width="21" height="18" border="0" align="absmiddle" /></a>' & @CRLF & _
' <span>' & @CRLF & _
' </td>' & @CRLF & _
'</tr>' & @CRLF & _
'<tr>' & @CRLF & _
' <td class="first-cell" title="ID: 2459 | 货号: INH002459"><div style="width:400px;height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">商品名称2</div></td>' & @CRLF & _
' <td align="right">' & @CRLF & _
' 2222.00 <span class="noprint">' & @CRLF & _
' <a href="' & "javascript:addToCart('" & "2459'" & ');"><img src="themes/hope2013/images/btn_cart.gif" width="21" height="18" border="0" align="absmiddle" /></a>' & @CRLF & _
' <span>' & @CRLF & _
' </td>' & @CRLF & _
'</tr>' & @CRLF & _
'</div>' & @CRLF & _
'</table>'
$marray = StringRegExp($data, 'ID.*?(\d{1,8}).*;">(.*?)<', 3)
_ArrayDisplay($marray)
貌似很复杂 回复 1# 东风破
你的正则已能匹配出结果, 但个人认为可以再简化点:
(?i)ID:\h*(\d{1,8})[^<>]+><[^<>]+>(.*?)</div> 回复 2# haijie1223
嗯,谢谢,我回去试一下。再 回复 2# haijie1223
我想再请教一下,为什么msgbox(0,"data",$myarray)总是会出错呢? 回复 6# 东风破
应该不会报错吧,把你的报错信息发上来看下。 回复 7# haijie1223
真是谢谢你!从你写的里面我学到很多。问题已经发现了,之前获取网页源码使用的是_IEBodyReadHTML的方式,突发奇想换成_INetGetSource的方式代码就运行正确了!过会再研究下两者到底什么区别。谢谢
页:
[1]