2011-12-21 45 views
0

我需要在一行中爲一個字符串提取多個匹配項。該行看起來是這樣的:Perl - 在同一行上進行多個匹配,並進行替換

./staticRoutes.10.10.30_VC;./staticRoutes.10.10.40_FEEDS

我需要提取每個文件名,並把它在某些@array。行上的文件名由分開;。所以在上面的例子中,我想只提取staticRoutes.10.10.30_VCstaticRoutes.10.10.40_FEEDS

任何幫助極大的讚賞。

非常感謝

約翰

回答

0

這將是正則表達式版本,它不會包含在結果中的領先./。如果這是值得的,你可以使用這個,否則我更喜歡拆分解決方案。

my $s = "./staticRoutes.10.10.30_VC;./staticRoutes.10.10.40_FEEDS"; 
my @res = $s =~ m~[^/]+(?=;|$)~g; 

這將匹配任何字符不是一個/(在[^/]+部),;或字符串的結尾(在(?=;|$)部分)

+0

這是一種享受!非常感謝您的幫助 – Wilko 2011-12-21 09:36:55

+0

請注意,這隻有在字段中總是有'/'的情況下才有效。如果你想解決這個問題,可在否定字符類中添加一個';'。 – Qtax 2011-12-21 10:18:39

2
my $some_string = './staticRoutes.10.10.30_VC;./staticRoutes.10.10.40_FEEDS'; 
my @array = split /;/, $some_string; 
+0

首先,非常感謝您的回覆之前。我需要從每場比賽中除掉./。現在我知道我可以在另一行代碼中使用替換/替換來做到這一點,但是是否有可能進行匹配,以便我不需要這樣做..? – Wilko 2011-12-21 08:53:16

相關問題