$test="111222333345555";
如何将相同重复数字的数字替换为' t'?
也就是说,如何使用正则表达式获取"11t22t333t4555t"
?
答案 0 :(得分:2)
如果要在有2个或更多相同的连续数字时进行替换:
#!/usr/bin/perl
use Modern::Perl;
my $test = "11222333345555";
$test =~ s/((\d)\2*)\2/$1t/g;
say $test;
<强>输出:强>
1t22t333t4555t
<强>解释强>
( : start group 1
( : start group 2
\d : a digit
) : end group 2
\2* : backreference on group 2 (ie: same digit) 0 or more times
) : end group 1
\2 : backreference on group 2
答案 1 :(得分:0)
将"(\d)(\1+?)\1(?!\1)" [1]
替换为"\1\2t" [2]
。
在[1]
中,您将匹配一个数字(\d
),后跟自己任意次(\1+?
),然后是其自身(\1
)并跟随除此之外((?!\1)
)。
你将用所述数字替换它,然后是所有数字,但是最后一个数字,然后是"t"