找回密码
 加入
搜索
查看: 3105|回复: 10

如何解决StringRegExp返回数组失败的错误?

[复制链接]
发表于 2008-6-11 10:51:50 | 显示全部楼层 |阅读模式
$a = StringRegExp($b, $c, 3)
$max=$a(0)

用StringRegExp函数返回数组失败的时候就会产生“子脚本使用了非数组变量”错误,脚本被强行关闭

我想加段语句来防止,我知道当StringRegExp取值失败后返回@error,但是@error的值是多少?
我用下面的判断好象无效。

$a = StringRegExp($b, $c, 3)
if @error = 1 then
exit
else
$max=$a(0)
endif

[ 本帖最后由 sprinkle 于 2008-7-1 21:21 编辑 ]
发表于 2008-6-11 11:11:42 | 显示全部楼层
现在玩AU3的都不看帮助的么??


StringRegExp ( "test", "pattern" [, flag ] [, offset ] ] )
参数

test The string to check
pattern The regular expression to compare.
flag [optional] A number to indicate how the function behaves. See below for details. The default is 0.
offset [optional] The string position to start the match (starts at 1) The default is 1.


Flag  Values
0 Returns 1 (matched) or 0 (no match)
1 Return array of matches.
2 Return array of matches including the full match (Perl / PHP style).
3 Return array of global matches.
4 Return an array of arrays containing global matches including the full match (Perl / PHP style).


返回值

Flag = 0 :
@Error Meaning
2  Bad pattern. @Extended = offset of error in pattern.


Flag = 1 or 2 :
@Error Meaning
0 Array is valid. Check @Extended for next offset
1 Array is invalid. No matches.
2 Bad pattern, array is invalid. @Extended = offset of error in pattern.


Flag = 3 or 4 :
@Error Meaning
0 Array is valid.  
1 Array is invalid. No matches.
2 Bad pattern, array is invalid. @Extended = offset of error in pattern.
 楼主| 发表于 2008-6-11 11:13:51 | 显示全部楼层
我肯定看了帮助啊,就是没看懂啊。老大
发表于 2008-6-11 11:24:58 | 显示全部楼层
你选的flag是3所以, ERROR  0表示匹配成功,数组合法, 1表示没有匹配成,数组非法,  2 表示正则语法有错,数组非法
所以你得判断, ERROR=0时 程序正常进行,ERROR=1时中断处理,  ERROR=2时检查正则语法错误

你写的那个判断,没有考虑ERROR为2, 如果不正常运行,是不是你正则语法有错误
 楼主| 发表于 2008-6-11 11:34:46 | 显示全部楼层
我现在遇到的问题很奇怪,我是做了个循环来获取数组,第一次一定正常,第2次可能非法也可能正常,第3次就一定非法。

不知道问题出在哪里了。。。
发表于 2008-6-11 11:36:33 | 显示全部楼层
用MSGBOX或CONSOLEWRITE进行每次循环的监控输出,看看问题到底出在哪...
 楼主| 发表于 2008-6-11 11:38:06 | 显示全部楼层
什么叫做正则语法?
 楼主| 发表于 2008-6-11 11:42:53 | 显示全部楼层
我用MSGBOX看了@error,每次都是0,返回是正常的。

我估计是后面可能返回的数组是[1]或者[2],就是匹配错误

这样我再调用[0]就马上报“子脚本使用了非数组变量”错误。

怎么才知道返回的数组是[0]还是[1]、[2]?

PS:我还用MsgBox(1,"查看",$a[0])直接调看了返回数组,不过同样的道理,直接“子脚本使用了非数组变量”了。
发表于 2008-6-11 17:41:16 | 显示全部楼层
你用StringRegExp , 竟然不知道什么叫正则??

建议你把FLAG改成1,  然后用ubound来解析数组并输出进行测试
发表于 2008-6-12 10:26:41 | 显示全部楼层
判断返回值是否为数组就可以了
$a = StringRegExp($b, $c, 3)
if IsArray ( $a)=0 then msgbox (0,"",匹配失败)
发表于 2008-8-16 17:29:42 | 显示全部楼层
为什么我的帮助里找不到StringRegExp
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-18 10:43 , Processed in 0.073641 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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