Perl匹配两个带有重复计数的字符

时间:2013-12-09 08:56:32

标签: regex perl

我想使用重复计数abababab匹配并检索{n}之类的序列。

这个正则表达式

my $rec = "xxxxxxababababxxxxxx";
$rec =~ /(ab{4})/;
print $1,"\n";

不起作用,因为{4}仅指b。如何使计数适用于多个字符?

2 个答案:

答案 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表示法表示先前捕获组中捕获的内容。因此,正则表达式“说”“匹配两个字符,后跟这两个字符的三个实例。”

希望这有帮助!