Perl - 在同一行上的多个匹配与交替

时间:2011-12-21 08:34:58

标签: regex perl multiple-matches

我需要在一行中为字符串提取多个匹配项。该行看起来像这样:

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

我需要提取每个文件名并将其放入@array中。该行上的文件名由; 分隔。所以在上面的例子中,我只想提取 staticRoutes.10.10.30_VC staticRoutes.10.10.40_FEEDS

非常感谢任何帮助。

非常感谢

约翰

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

这将是正则表达式版本,它不会在结果中包含前导./。如果这是值得的,你可以使用它,否则我更喜欢拆分解决方案。

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

这将匹配任何不是/[^/]+部分)的字符,在;之前或字符串末尾((?=;|$)部分)< / p>