我必须使用Perl删除给定字符串中的一组重复单词

时间:2017-05-29 07:34:46

标签: regex perl

例如: -

我必须从多个网站上抓取地址。有时地址有重复的国家名称或地址。

$string1="No 3, 3rd street mumbai india 3rd street";
$string2="#3 1019 GM Amsterdam Funda Real Estate BV 1019 GM Amsterdam The Netherlands";

我需要删除给定字符串中n个单词的组。 在给定的 $ string1包含"第三街"作为重复。我需要删除。 $ string2包含" 1019 GM Amsterdam"作为重复。

输出将是......

$string1="No 3, 3rd street mumbai india";
$string2="#3 1019 GM Amsterdam Funda Real Estate BV The Netherlands";

2 个答案:

答案 0 :(得分:2)

我尝试了一些暴力方法尝试以下

use warnings;
use strict;
use POSIX;

my $string1="aaa bbb aaa ccc aaa bbb";
#my $string1="fff ggg hhh ddd jjj fff ggg hhh";
#my $string2 = "fff ggg hhh ddd jjj fff ggg hhh fff ggg mmm";

my $string1_count = () = $string1=~m/\s+/g;
my $string_divide = ceil($string1_count/2);

for(my $i = $string_divide; $i > 1; $i--)
{
    last if($string1 =~s/((?:\w+\s?){$i}).+\K\1//g);
}


print "$string1\n";

答案 1 :(得分:1)

试试这个:

my $string1="aaa bbb aaa ccc aaa bbb";
my $string2="fff ggg hhh ddd jjj fff ggg hhh";

my @split = split / /, $string1;
my @unique = keys {map {$_ => 1} @split};

my $string3 = join " ", sort @unique;

print $string3;