如果count为2,是否可以使用正则表达式替换字符串中的相邻字符?

时间:2018-01-15 05:50:48

标签: regex perl

字符串:abc aa efg a aaa hijk aazzz

使用正则表达式,我只想将2个相邻的“a”替换为单个“a”。

  1. aa to a
  2. aazzz to azzz
  3. 我的代码是这样的,但它也替代了3“a”。

    s/(aa)/a/g;
    

1 个答案:

答案 0 :(得分:3)

Lookarounds在这里派上用场,我们可以尝试匹配aa,条件是aa之前和之后的a不是(?<!a)aa(?!a) 。使用这种模式:

my $old = 'abc aa efg a aaa hijk aazzz';
my $new = $old =~ s/(?<!a)aa(?!a)/a/rg;
print $new;

abc a efg a aaa hijk azzz

这是一个有效的代码片段(下面的演示):

{{1}}

Demo