2013-03-10 54 views
0

有沒有辦法從「many」|「'正則表達式「匹配。如何從perl中的多個模式匹配得到許多匹配的模式

這裏是我的代碼,

#! /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); 

我希望能得到「谷歌和應用程序」,因爲這個關鍵字都在字符串匹配。但是,如何悲傷,只是讓「谷歌」

回答

2

只需添加一個/g modifier到你的對手:

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

你會得到所有的比賽的方式。

+0

明白了。 Thx這麼多 – wbo4958 2013-03-10 09:17:09

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模塊

+0

它也可以,thx – wbo4958 2013-03-10 09:19:25