我想使用重复计数abababab
匹配并检索{n}
之类的序列。
这个正则表达式
my $rec = "xxxxxxababababxxxxxx";
$rec =~ /(ab{4})/;
print $1,"\n";
不起作用,因为{4}
仅指b
。如何使计数适用于多个字符?
答案 0 :(得分:7)
您必须将要重复的字符分组括在括号中。在Perl正则表达式中,(?:…)
与普通括号相同,但不捕获内容。
所以你想要
$rec =~ /((?:ab){4})/;
答案 1 :(得分:1)
“我想匹配并检索之类的 abababab ......”(斜体,我的)
这是一个更通用的正则表达式,用于匹配连续重复四次的任意两个(非换行)字符集:
use strict;
use warnings;
my $rec = "xxxxxxababababxxxxxx";
my ($capture) = $rec =~ /((..)\2{3})/;
print $capture;
输出:
abababab
\2
表示法表示先前捕获组中捕获的内容。因此,正则表达式“说”“匹配两个字符,后跟这两个字符的三个实例。”
希望这有帮助!