perl中关于正则表达式的问题

2025-05-01 16:24:59
推荐回答(4个)
回答1:

首先,g{N}是perl 5.10的反向引用新写法,N是想要反向引用的组号。没有g{N}写法的时候,需要用\1,\2,\3等来表示相对应的反向引用,数字代表括号出现的先后,即为“组号”。在你给出的模式中,只出现了一个括号,所以{}里应该是1,它指“引用第1个括号所匹配的内容”。你理解的可能是,因为b出现2次所以括号里应该是2,错在没理解g{N}中N的含义。另外,这个模式比较简单,其实没必要用g{},只需/a(.)\1a/即可。

回答2:

请给出具体文本和实现的目的
如果你要匹配两次b,直接if (/a(.)bba/) 不就行了
如果匹配多次b:
$_ = "abba";
while(/b/g){
print "matched\n"
}

回答3:

匹配错了
用/a(.{2})a/

回答4:

\g{2}错了 \d吧
没有\g这样的