有没有可能的方法匹配第n个字符?

时间:2016-08-03 05:06:57

标签: regex perl

我的输入数据如下。我想将这个词分组在-的第6和第7位之间。

my $sa = "a1a1a1-b1b1b1-c-ddd-eee-fff-gggggg-hHhH-iiii-j-KKKKK";

为此,实际的正则表达式是

/[^-]+-[^-]+-[^-]+-[^-]+-[^-]+-([^-]+)-/

为了构建正则表达式,我尝试了如下,

my $avc = "[^-]+-" x 5 . "([^-]+)-";

my $ar = qr"$avc";

$sa =~m/$ar/g;

print $1;

我怀疑,正则表达式中是否有任何选项可用。不使用x。我怎么能在一个正则表达式中做到这一点?

1 个答案:

答案 0 :(得分:7)

使用limiting repetition quantifier

/(?:[^-]+-){5}([^-]+)-/

Regular expression visualization

Regex explanation here.

捕获组可以在重复组内,只有最后一个被捕获。

/(?:([^-]+)-){6}/

Regular expression visualization

Regex explanation here.