找回密码
 加入
搜索
查看: 3030|回复: 5

[AU3基础] [已解决]正则表达式的迷惑

  [复制链接]
发表于 2014-1-27 20:47:24 | 显示全部楼层 |阅读模式
本帖最后由 hnfeng 于 2014-2-3 18:03 编辑

看说明 正则表达式 中{5}表示重复前面的字符5次
([A-Za-z0-9]{5}-){4}[A-Za-z0-9]{5} 与
[A-Za-z0-9]{5}-[A-Za-z0-9]{5}-[A-Za-z0-9]{5}-[A-Za-z0-9]{5}-[A-Za-z0-9]{5} 应该是等效的吧?
但是在 StringRegExp 中应用,结果却不相同。
请分别把下面的标志换成1,2,3,4试一下:
#include<Array.au3>
Local $KeyH="asdsdfs-12345-abcde-dghrt-12345fghgjfgfgffgdfgdg12345-65443-76754-fdgdf-dfhfgfmkgjhjbcde"
Local $K = StringRegExp($KeyH, "[A-Za-z0-9]{5}-[A-Za-z0-9]{5}-[A-Za-z0-9]{5}-[A-Za-z0-9]{5}-[A-Za-z0-9]{5}",1)
_ArrayDisplay($K)
#include<Array.au3>
Local $KeyH="asdsdfs-12345-abcde-dghrt-12345fghgjfgfgffgdfgdg12345-65443-76754-fdgdf-dfhfgfmkgjhjbcde"
Local $K = StringRegExp($KeyH, "([A-Za-z0-9]{5}-){4}[A-Za-z0-9]{5}", 1)
_ArrayDisplay($K)
标志为1时,上面代码的结果:[0]dsdfs-12345-abcde-dghrt-12345
下面代码的结果:[0]|dghrt-

标志为2时,上面代码的结果:
[0]|dsdfs-12345-abcde-dghrt-12345
下面代码的结果:
[0]|dsdfs-12345-abcde-dghrt-12345
[1]|dghrt-
怎么第二个记录是这样?

标志为3时,上面代码的结果:
[0]|dsdfs-12345-abcde-dghrt-12345
[1]|12345-65443-76754-fdgdf-dfhfg
下面代码的结果:
[0]|dghrt-
[1]|fdgdf-
两个记录都是这样?

标志为4时,上面代码的结果:
[0]
[1]
下面代码的结果:
[0]
[1]
空的?
发表于 2014-1-28 11:19:00 | 显示全部楼层
标志为2或4时,数组的元素都是数组
 楼主| 发表于 2014-1-28 15:39:32 | 显示全部楼层
回复 2# afan


    上面结果看,好像3 也是返回数组。

上面的结果,感觉是bug
发表于 2014-1-31 21:42:33 | 显示全部楼层
不等效滴。你想让这个组([A-Za-z0-9]{5}-)重复四次,可用的这个括号后表示在匹配的情况下提取括号里的字串。所以它匹配的也是那二串,只是再在匹配的字串中提取了部分字串,并显示。
不提取应该这样(?:[A-Za-z0-9]{5}-){4}[A-Za-z0-9]{5},这完全等效了。
 楼主| 发表于 2014-1-31 22:08:07 | 显示全部楼层
回复 4# shqf


    多谢,学习了
经测试确实如此
刚接触正则表达式,需要学的太多了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-28 13:20 , Processed in 0.081054 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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