这是我的表达:
((.)*(,)){2}
这是输入:
1231,3453453,ewrtewrt,wertwe,rwewer,werewrwe
我想要的预期输出是:
1231,3453453,
ewrtewrt,wertwe,
rwewer,werewrwe
而不是正则表达式,您应该只用逗号(或任何您预期的分隔符)分隔。然后遍历项目并每两个项目添加换行符。
=$ perl -e 'my $q = q{1231,3453453,ewrtewrt,wertwe,rwewer,werewrwe}; $q =~ s/((?:[^,]*,){2})/$1\n/g; print $q'
1231,3453453,
ewrtewrt,wertwe,
rwewer,werewrwe
那就是正则表达式是:
s/((?:[^,]*,){2})/$1\n/g
这是一个计算逗号并在每隔一个处插入换行符的解决方案:
perl -plwe's/,\K/++$i % 2 || "\n"/eg'
也就是说,找到一个逗号,保留它 ( \K
) 并插入一个评估字符串。迭代器$i
将是每隔一个逗号,所以表达式返回一个换行符,否则什么都没有。正则表达式是:
s/,\K/++$i % 2 || "\n"/eg
它确实需要一个计数变量,这可能是一个缺点。
s/(,[^,]*,)/$1\n/g
在这里测试