找回密码
 加入
搜索
查看: 1941|回复: 2

[AU3基础] 如果正则表达式匹配不到内容,算错误,还是跳过?

[复制链接]
发表于 2012-3-1 16:35:14 | 显示全部楼层 |阅读模式
本帖最后由 半翅鸟 于 2012-3-1 17:13 编辑

一个很菜的问题,例如:
#include <Array.au3>
#include <INet.au3>
#include<Array.au3>
$s_URL = 'http://www.ysxyfs.com/goods.php?id=2236'
$sText = _INetGetSource($s_URL)
Local $huohao = StringRegExp($sText, '货号:(.+?)<br', 3)
Local $colors = StringRegExp($sText, '(?s)颜色:.+?" />\s+(.+?)\s+</', 3)
Local $size = StringRegExp($sText, '/>\s*(S|M|L|XL|XXL|均码)\s*\[(\d*)\]', 3)
FileWriteLine (@DesktopDir&"\test.txt",$huohao[0]&$colors[0]&$size[0])
If Not @Error Then MsgBox(0, '商品货号 ',$huohao[0]&colors[0]&$size[0])
问题一:如果其中一条正则表示式匹配不上,例如:货号本身不存在,那么这个程序算错误,还是会继续执行?我自己的尝试是如果匹配不到,程序按下F5没有反映,应该是错误了。
问题二:$size这个变量数组根据帮助文件看不是一个高效的数组,因为混合使用多种数据类型,不过很方便,就是一个不知道如何将匹配的内容输出来!
因为匹配出来的内容可能是2个,4个,8个等,例如:M10 L10 XL10,或S10或均码10,那我如何让他们出来呢?
利用$size[0]&$size[1]的时候,一定是结果是2个的才弹出Msgbox,如果用$size[0]&$size[1]$size[2]&$size[3],而网页内容只有M10,就会出现错误。
求解,在线期盼,谢谢指教。

经过帖子搜索,找到了第一个问题的答案,如果正则表达式匹配不到,命令继续执行
发表于 2012-3-1 20:14:58 | 显示全部楼层
本帖最后由 shqf 于 2012-3-1 20:27 编辑

用UBound($size)取得数组的大小,再用循环 0 to UBound($size)-1就行了
发表于 2012-3-1 20:24:03 | 显示全部楼层
本帖最后由 zch11230 于 2012-3-1 20:37 编辑

标志 = 3 或 4 时:
@Error 意思
0 有效数组.
1 数组无效. 没有匹配项目.
2 正则表达式错误, 数组无效. @Extended = 在正则表达式中的错误偏移量.

楼主说的是这个意思吗?

但是楼主有3个变量 我觉得一起检查比较方便
If IsArray($huohao) And IsArray ($colors) And IsArray ($size) Then ConsoleWrite($huohao[0]&"  "&$colors[0]&"  "&$size[0]&@CRLF)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-13 10:55 , Processed in 0.077159 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表