据我所知,如果我想用正则表达式拆分字符串,并将分隔符保留在Perl、JavsScript或PHP中,我应该在正则表达式中使用捕获括号/组;例如在 Perl 中(我想在一个数字和右括号处拆分):
$ echo -e "123.123 1) 234.234\n345.345 0) 456.456" \
| perl -ne 'print join("--", split(/(\d\))/,$_));'
123.123 --1)-- 234.234
345.345 --0)-- 456.456
我正在尝试相同的技巧awk
,但它看起来不起作用(如,分隔符仍然“吃掉”,即使使用了捕获组/括号):
$ echo -e "123.123 1) 234.234\n345.345 0) 456.456" \
| awk '{print; n=split($0,a,/([0-9]\))/);for(i=1;i<=n;i++){print i,a[i];}}'
123.123 1) 234.234
1 123.123
2 234.234
345.345 0) 456.456
1 345.345
2 456.456
可以awk
强制将分隔符匹配保留在拆分结果的数组中吗?