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你是说你想在第一场比赛中退出循环吗。后编辑检查它。