hnfeng 发表于 2014-1-27 20:47:24

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

本帖最后由 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时,上面代码的结果:


下面代码的结果:


空的?

afan 发表于 2014-1-28 11:19:00

标志为2或4时,数组的元素都是数组

hnfeng 发表于 2014-1-28 15:39:32

回复 2# afan


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

上面的结果,感觉是bug

shqf 发表于 2014-1-31 21:42:33

不等效滴。你想让这个组({5}-)重复四次,可用的这个括号后表示在匹配的情况下提取括号里的字串。所以它匹配的也是那二串,只是再在匹配的字串中提取了部分字串,并显示。
不提取应该这样(?:{5}-){4}{5},这完全等效了。

hnfeng 发表于 2014-1-31 22:08:07

回复 4# shqf


    多谢,学习了
经测试确实如此
刚接触正则表达式,需要学的太多了
页: [1]
查看完整版本: [已解决]正则表达式的迷惑