Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 我必须使用Perl删除给定字符串中的一组重复单词_Regex_Perl - Fatal编程技术网

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

Regex 我必须使用Perl删除给定字符串中的一组重复单词,regex,perl,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 G

例如:-

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

$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";
试试这个:

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;

我已经尝试了一些蛮力的方法尝试以下

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";

输出
$string1
不应该是
“aaa bbb ccc”
?如何定义
n
(n个字的组)?如果它不是固定的,在什么范围内变化?@Саа27。谢谢你的信息。我们将检查,因此我只使用5.18。如果我运行此代码,它将给出输出“aaa bbb ccc”。但我需要的是“aaa bbb aaa ccc”。请确保这一点,因为这是一个缺乏逻辑的相反,它是为给定的字符串工作,我用一些其他字符串,如“fff ggg hhh ddd jjj fff ggg hhh fff ggg mmm”测试它显示“fff ggg HHHH DDJ mmm”,但我需要“fff ggg HHHH ddd JJ fff ggg mmm”。这可能吗?@Senthil你是说你想在第一场比赛中退出循环吗。后编辑检查它。