0

「多くの '|' からマルチマッチパターンを取得する方法はありますか? 正規表現」マッチング。

ここに私のコードがあります、

#! /usr/bin/perl
@matches = qw(google intel hp qualcomm app);

$keyword = join('|', @matches);

$string = "hello google app";

@founded = ($string =~ /($keyword)/);

print "Founded keyword is:" . join(" ", @founded);

このキーワードは両方とも文字列で一致するため、「google and app」を取得したいと考えています。しかし、悲しいことに、「Google」を取得してください

4

2 に答える 2

2

マッチに/g修飾子を追加するだけです:

@found = ($string =~ /($keyword)/g);

そうすれば、すべてのマッチを取得できます。

于 2013-03-10T08:24:25.587 に答える
2

2 つのリストの交点を探していると思います。

use Array::Utils qw(:all);

my @matches = qw(google intel hp qualcomm app);
my @find = qw(hello google app);

my @result = intersect(@matches, @find);
print "Founded keyword(s): ", join(" ", @result) . "\n";

このソリューションはArray::Utilsモジュールを使用します

于 2013-03-10T08:28:14.630 に答える