本帖最后由 kxing 于 2010-9-2 02:54 编辑
尝试用 (\n.*){n} 来减少患行的书写.
但是如果用()的话他也会写入数组中。
有没有类似于 . 这样的元字符同时匹配换行呢?InetGet("http://mp3.sogou.com/music.so?query="&AnsiURLEncode("我的心好冷"),"source.htm")
Local $Str=FileRead("Source.htm")
$exp=StringRegExp($Str,' title\="(.+?)" action.*\n.*\n.*\n.*singer\="(.+?)".*\n.*title\="(.+?)" target.*\n.*\n.*\n.*'&"\'"&'(/down\.so\?.+?)'&"\'"&'.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*:(.+?)-.*\n.*\>(.+?)\<',3)
For $i=0 To UBound($exp)-6 Step 6
FileWriteLine("List.txt",$exp[$i]&" - "&$exp[$i+1]&" - "&$exp[$i+2]&" - "&$exp[$i+4]&" - "&$exp[$i+5])
FileWriteLine("List.txt",$exp[$i+3])
Next
Func AnsiURLEncode($str)
Local $astr, $i, $s2d, $sS = StringSplit($str, '')
For $i = 1 To UBound($sS) - 1
If StringRegExp($sS[$i], '[^\x00-\xff]') Then
$s2d = StringToBinary($sS[$i] & ' ')
$astr &= '%' & StringMid($s2d, 3, 2) & '%' & StringMid($s2d, 5, 2)
ElseIf StringRegExp($sS[$i], '[^\w]') Then
$s2d = StringToBinary($sS[$i])
$astr &= '%' & StringMid($s2d, 3, 2)
Else
$astr &= $sS[$i]
EndIf
Next
$astr = StringReplace($astr, '%20', '+') ;转换空格的编码为'+'号,也可不要此行
Return $astr
EndFunc
多谢!!!! |