我想在Perl中删除字符串中的双字,例如我有一个字符串: 这是文本文本文本非常重要,而且只是简单的文本。
我这样做:
$linia =~ s/(.*)\1/$1/g;
但它只适用于两个加倍的单词,如何更改为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