加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

数组 – 是字符串中包含的任何数组项

发布时间:2020-12-16 06:19:01 所属栏目:大数据 来源:网络整理
导读:我有一个关键字列表和一个黑名单. 我想删除包含任何黑名单项的所有关键字. 目前我这样做: my @keywords = ( 'some good keyword','some other good keyword','some bad keyword');my @blacklist = ( 'bad' );A: for my $keyword ( @keywords ) { B: for my
我有一个关键字列表和一个黑名单.
我想删除包含任何黑名单项的所有关键字.
目前我这样做:

my @keywords = ( 'some good keyword','some other good keyword','some bad keyword');
my @blacklist = ( 'bad' );

A: for my $keyword ( @keywords ) {
    B: for my $bl ( @blacklist ) {
        next A if $keyword =~ /$bl/i;      # omitting $keyword
    }
    # some keyword cleaning (for instance: erasing non a-zA-Z0-9 characters,etc)
}

我想知道有没有最快的方法来做到这一点,因为目前我有大约25万个关键词和黑名单中的几个hundrets词.

解决方法

最直接的选择是将黑名单条目加入到单个正则表达式中,然后为那些与该正则表达式不匹配的关键字列表grep:

#!/usr/bin/env perl    

use strict;
use warnings;
use 5.010;

my @keywords = 
  ('some good keyword','some bad keyword');
my @blacklist = ('bad');

my $re = join '|',@blacklist;
my @good = grep { $_ !~ /$re/ } @keywords;

say join "n",@good;

输出:

some good keyword
some other good keyword

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读