我有以下示例:
$ perl -pe 's/(.(,(.))*)/|$1|$2|$3|/' <<<a,b,c
|a,b,c|,c|c|
如何访问嵌套捕获组中的最后一个匹配项?在此示例中,嵌套捕获组仅捕获c
。如何参考b
?
答案 0 :(得分:1)
正如你所说,我怀疑你没有展示一个有代表性的例子。但显而易见的方法是确保捕获的字符后跟逗号,如此
use strict;
use warnings;
my $s = 'a,b,c';
$s =~ s/(.(,(.(?=,)))*)/|$1|$2|$3|/;
print $s;
<强>输出强>
|a,b|,b|b|,c
答案 1 :(得分:1)
即使示例之前和之后有数据,您仍然可以依赖split
。您只需要使用多个步骤。
以下演示了对于随机构造的示例:
echo '<start>a,b,c<end>' | perl -pe 's/<start>\K(.*?)(?=<end>)/"|" . join("|", split ",", $1) . "|"/e'
输出:
<start>|a|b|c|<end>