我正在尝试使用正则表达式匹配重叠部分时使用/ g.我相信我需要使用lookbehind,但我无法理解文档并使其匹配.
例如,测试用例:
use feature ':5.18';
use warnings;
use diagnostics;
use utf8;
my $test = '1 1 1';
$test =~ s/(?=[0-9]+) ([0-9]+)/$1$2/g;
say $test; # still get '1 1 1'
Run Code Online (Sandbox Code Playgroud)
我如何摆脱空间?输出应为'111'.
为了能够删除数字之间的空格,您可以使用零宽度环视断言:
$test =~ s/(?<=[0-9])\s+(?=[0-9])//g;
Run Code Online (Sandbox Code Playgroud)
分手:
(?<=[0-9]):断言我们在之前的位置有一个数字\s+:匹配1+空格(?=[0-9]):断言我们在下一个位置有一个数字