回复 4# haijie1223
你这个字串暂时没有好办法, 我用的办法是:
1. 将字串拆分成行
2. 判断前4个字符是否为'<tr>'
3. 找到合规则的行之后,再调用正则 <td>(.*?)</td> 来提取.
4. 提取到的数据存入数组保存起来
#include <array.au3>
Local $str='<tr><td>2013-12-31</td><td></td><td>28988.73</td><td>11.27</td></tr>'&@LF & _
'<td>2013-06-30</td><td></td><td>29000.00</td><td>26996.73</td><td>2003.27</td>'&@LF & _
'<td>2012-12-31</td><td></td><td>29000.00</td><td>25793.00</td><td>3207.00</td>'&@LF & _
'<tr><td>2012-12-03</td><td></td><td>29000.00</td><td>25587.46</td><td>3412.55</td></tr>'
;按行拆分
Local $array=StringSplit($str,@LF)
;出错退出
If @error Then Exit
;定义结果数组
Local $result[1][1]
;从数据数组中逐行处理
For $i=1 To $array[0]
;如果行的开头不合规则 跳过
If StringCompare(StringLeft($array[$i],4),"<tr>")<>0 Then ContinueLoop
;提取数据
Local $tempArray=StringRegExp($array[$i],"<td>(.*?)</td>",3)
;出错跳过
If @error Then ContinueLoop
;重定义数组
ReDim $result[$i+1][UBound($tempArray)]
;保存提取的结果.
For $j=0 To UBound($tempArray)-1
$result[$i-1][$j]=$tempArray[$j]
Next
Next
_ArrayDisplay($result,"最终结果")
|