如何删除Perl中的双字?

时间:2014-11-10 13:13:03

标签: regex perl

我想在Perl中删除字符串中的双字,例如我有一个字符串: 这是文本文本文本非常重要,而且只是简单的文本。

我这样做:

$linia =~ s/(.*)\1/$1/g;

但它只适用于两个加倍的单词,如何更改为2个加倍的单词。

2 个答案:

答案 0 :(得分:1)

只需添加+即可匹配一次或多次,

$linia =~ s/(.*)\1+/$1/g;

或者如果要删除所有重复项,

my %seen;
$linia =~ s|(\w+)| $seen{$1}++ ? "" : $1 |ge;

答案 1 :(得分:0)

怎么样:

my $str = q/abcabcabcabc/;
$str =~  s/(.+?)\1+/$1/;
print $str,"\n";

如果单词之间有空格:

my $str = q/abc abc abc abc/;
$str =~ s/(\w+\s+)\1+/$1/g;

<强>输出:

abc