如何使用正则表达式实现替换?

时间:2016-09-11 08:15:39

标签: perl

$test="111222333345555";

如何将相同重复数字的数字替换为' t'?

也就是说,如何使用正则表达式获取"11t22t333t4555t"

2 个答案:

答案 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"