是否有任何可能的方法来匹配第n个字符?

是否有任何可能的方法来匹配第n个字符?

问题描述:

我的输入数据如下。我想将这个词在-的第6和第7位之间分组。是否有任何可能的方法来匹配第n个字符?

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。我怎么能在一个正则表达式中做到这一点?

+3

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

+2

别,并且使用“分裂”。 '我的$值=(split/- /,$ sa)[6];' – Sobrique

使用limiting repetition quantifier

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

Regular expression visualization

Regex explanation here.


捕获组只能是最后一个被捕获的重复组内。

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

Regular expression visualization

Regex explanation here.