如何解决StringRegExp返回数组失败的错误?
$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 编辑 ] 现在玩AU3的都不看帮助的么??
StringRegExp ( "test", "pattern" [, flag ] [, offset ] ] )
参数
test The string to check
pattern The regular expression to compare.
flag A number to indicate how the function behaves. See below for details. The default is 0.
offset The string position to start the match (starts at 1) The default is 1.
FlagValues
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
2Bad 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. 我肯定看了帮助啊,就是没看懂啊。老大 你选的flag是3所以, ERROR0表示匹配成功,数组合法, 1表示没有匹配成,数组非法,2 表示正则语法有错,数组非法
所以你得判断, ERROR=0时 程序正常进行,ERROR=1时中断处理,ERROR=2时检查正则语法错误
你写的那个判断,没有考虑ERROR为2, 如果不正常运行,是不是你正则语法有错误 我现在遇到的问题很奇怪,我是做了个循环来获取数组,第一次一定正常,第2次可能非法也可能正常,第3次就一定非法。
不知道问题出在哪里了。。。 用MSGBOX或CONSOLEWRITE进行每次循环的监控输出,看看问题到底出在哪... 什么叫做正则语法? 我用MSGBOX看了@error,每次都是0,返回是正常的。
我估计是后面可能返回的数组是或者,就是匹配错误
这样我再调用就马上报“子脚本使用了非数组变量”错误。
怎么才知道返回的数组是还是、?
PS:我还用MsgBox(1,"查看",$a)直接调看了返回数组,不过同样的道理,直接“子脚本使用了非数组变量”了。 你用StringRegExp , 竟然不知道什么叫正则??
建议你把FLAG改成1,然后用ubound来解析数组并输出进行测试 判断返回值是否为数组就可以了
$a = StringRegExp($b, $c, 3)
if IsArray ( $a)=0 then msgbox (0,"",匹配失败) 为什么我的帮助里找不到StringRegExp
页:
[1]