kxing 发表于 2012-2-13 17:36:09

[已解决]请教个正则捕获组的问题

本帖最后由 kxing 于 2012-2-13 20:40 编辑

为什么下述代码会出现三个捕获组,而我只用了两个括号。
另外为什么$array[1]第二个元素会出现空的现象。
麻烦正则高手指点!!!
多谢!!!!$s='123-abc-我爱你'
$exp=stringregexp($s,"(\d+)|(+)",3)
msgbox(0,ubound($exp),$exp&$exp)

kxing 发表于 2012-2-13 17:37:03

本帖最后由 kxing 于 2012-2-13 17:48 编辑

这个 | 不是或者的意思吗
按我理解来讲应该是捕获出两个结果啊。
$a[0]=123,$a[1]='abc'

afan 发表于 2012-2-13 18:29:21

因为你两边都是组,这样会流出一个“空隙”给“|”的另一方,如果只有一边是组
(\d+)|+ 或者 \d+|(+)
或者两边都不是组
\d+|+
就不会捕获这个空隙

kxing 发表于 2012-2-13 18:43:47

但是我想同时捕获\d+和[a-z]该怎么做呢
当然这是两个完全不同的正则表达式,这里的123|abc只是方便举例而已。

afan 发表于 2012-2-13 18:56:15

回复 4# kxing


    示例要捕获什么

user3000 发表于 2012-2-13 19:33:58

但是我想同时捕获\d+和[a-z]该怎么做呢
当然这是两个完全不同的正则表达式,这里的123|abc ...
kxing 发表于 2012-2-13 18:43 http://www.autoitx.com/images/common/back.gif$exp=stringregexp($s,"([\da-z]+)",3)
; 或者
$Exp = StringRegExp($s, '(\d+)-(+)', 3)用两个括号来捕获多个分组的, 必须指出两个分组之间有什么字符!

kxing 发表于 2012-2-13 20:39:42

我已经解决了,多谢两位!!!
页: [1]
查看完整版本: [已解决]请教个正则捕获组的问题