Perl的.Regexp只工作一次

tao*_*fos 6 regex perl

我需要使用regexp处理字符串,如果是数字则更改x-> y.

字符串:2x2x2 2x 2x2x 2x2x2x2x2

正则表达式:s/([0-9])x([0-9])/$1y$2/g

my $string = "2x2x2 2x 2x2x 2x2x2x2x2";

$string =~ s/([0-9])x([0-9])/$1y$2/g;

print "$string\n";
Run Code Online (Sandbox Code Playgroud)

我预计: 2y2y2 xx 2x 2y2x 2y2y2y2y2

但结果是:( 2y2x2 2x 2y2x 2y2x2y2x2并非所有2x2都改变了)

我该怎么办?

xda*_*azz 8

试试下面的正则表达式:

s/(?<=\d)x(?=\d)/y/g
Run Code Online (Sandbox Code Playgroud)

  • @RohitJain这意味着替换前后为数字的`x`. (2认同)
  • @RohitJain:`perldoc perlre`并看到`Look-Around Assertions` (2认同)