我有以下形式的文本:
Name=Value1
Name=Value2
Name=Value3
使用 Perl,我想匹配
/Name=(.+?)/
每次出现并提取 (.+?) 并将其推送到数组中。我知道我可以使用 $1
获取我需要的文本,我可以使用 =~
执行正则表达式匹配,但我不知道如何获得所有匹配项。
最佳答案
一个 m//g
在列表上下文中返回所有捕获的匹配项。
#!/usr/bin/perl
use strict; use warnings;
my $str = <<EO_STR;
Name=Value1
Name=Value2
Name=Value3
EO_STR
my @matches = $str =~ /=(\w+)/g;
# or my @matches = $str =~ /=([^\n]+)/g;
# or my @matches = $str =~ /=(.+)$/mg;
# depending on what you want to capture
print "@matches\n";
但是,您似乎正在解析 INI 样式的配置文件。在那种情况下,我会推荐 Config::Std .
关于regex - 如何在 Perl 中找到与正则表达式的所有匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1723440/