newuser 发表于 2011-1-11 17:05:46

[已解决]正则替换的问题:其中的\0\1\2什么意思?

本帖最后由 newuser 于 2011-1-13 08:19 编辑


如图.

3mile 发表于 2011-1-11 17:36:10

已经捕获组的0基索引。我是这样理解的。

newuser 发表于 2011-1-12 07:57:22

回复 2# 3mile
捕获组的0基索引?能提供这方面的资料吗?我最近也看了不少正则资料,当然只是1遍,领悟的还很不够,我只看到了未命名组(exp)和自定义组(?<group>exp)的内容,但他们的组号是从1开始的啊!那对于他们的反向引用也是用 \1\2 表示,而资料说\0是代表整个正则表达式模式所匹配的内容,不知道我的理解是否正确?
对于我的楼上的问题:
\d{3}没有被()括起来,他们有自动被分配的组号吗?

afan 发表于 2011-1-12 10:14:43

反向引用的组号,有“()”则按每对“()”从1开始分配组。
如果没有一对“()”则没有组分配,默认用 \0 表示整个表达式的匹配内容,此时\1、\2之类均无意义。1#的例子就是如此,起作用的只有\0。
如果有一个及一个以上的组,\0=\1

newuser 发表于 2011-1-12 10:57:49

本帖最后由 newuser 于 2011-1-12 10:59 编辑

反向引用的组号,有“()”则按每对“()”从1开始分配组。
如果没有一对“()”则没有组分配,默认用 \0 表示 ...
afan 发表于 2011-1-12 10:14 http://autoitx.com/images/common/back.gif

假设有:foo\(([^,]*),([^,]*),([^)]*)\)
则             \1         \2       \3      与上一一对应,因使用了(),所以不存在\0   ?有点乱,此时的 \0=\1 ?该怎么理解.

sxd 发表于 2011-1-12 12:33:03

额 这是用在替换里的么?$1 == \1?

newuser 发表于 2011-1-12 14:30:59

回复 6# sxd
就我这个问题,替换用 [\0]就可以了,只不过象上面的问题,还不理解?

lchl0588 发表于 2011-1-12 18:32:05

我这就两张图,每张图做比较:



qq724174 发表于 2011-3-2 18:50:59

阿斯打扫打扫打扫的撒旦
页: [1]
查看完整版本: [已解决]正则替换的问题:其中的\0\1\2什么意思?