[已解决]正则表达式的迷惑
本帖最后由 hnfeng 于 2014-2-3 18:03 编辑看说明 正则表达式 中{5}表示重复前面的字符5次
({5}-){4}{5} 与
{5}-{5}-{5}-{5}-{5} 应该是等效的吧?
但是在 StringRegExp 中应用,结果却不相同。
请分别把下面的标志换成1,2,3,4试一下:#include<Array.au3>
Local $KeyH="asdsdfs-12345-abcde-dghrt-12345fghgjfgfgffgdfgdg12345-65443-76754-fdgdf-dfhfgfmkgjhjbcde"
Local $K = StringRegExp($KeyH, "{5}-{5}-{5}-{5}-{5}",1)
_ArrayDisplay($K)
#include<Array.au3>
Local $KeyH="asdsdfs-12345-abcde-dghrt-12345fghgjfgfgffgdfgdg12345-65443-76754-fdgdf-dfhfgfmkgjhjbcde"
Local $K = StringRegExp($KeyH, "({5}-){4}{5}", 1)
_ArrayDisplay($K)
标志为1时,上面代码的结果:dsdfs-12345-abcde-dghrt-12345
下面代码的结果:|dghrt-
标志为2时,上面代码的结果:
|dsdfs-12345-abcde-dghrt-12345
下面代码的结果:
|dsdfs-12345-abcde-dghrt-12345
|dghrt-
怎么第二个记录是这样?
标志为3时,上面代码的结果:
|dsdfs-12345-abcde-dghrt-12345
|12345-65443-76754-fdgdf-dfhfg
下面代码的结果:
|dghrt-
|fdgdf-
两个记录都是这样?
标志为4时,上面代码的结果:
下面代码的结果:
空的? 标志为2或4时,数组的元素都是数组 回复 2# afan
上面结果看,好像3 也是返回数组。
上面的结果,感觉是bug 不等效滴。你想让这个组({5}-)重复四次,可用的这个括号后表示在匹配的情况下提取括号里的字串。所以它匹配的也是那二串,只是再在匹配的字串中提取了部分字串,并显示。
不提取应该这样(?:{5}-){4}{5},这完全等效了。 回复 4# shqf
多谢,学习了
经测试确实如此
刚接触正则表达式,需要学的太多了
页:
[1]