regex - 如何在 Perl 中找到与正则表达式的所有匹配项?

标签 regex perl

我有以下形式的文本:

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/

相关文章:

perl - session 不会在 Mojolicious 中过期

windows - 什么是适用于 Windows 的免费 Perl IDE?

mysql - 在没有互联网访问的情况下安装 Perl 的 mysql-dbd 模块

regex - 神交 - 如何获得 URIPATHPARAM?

python - 基于表达式匹配的过滤

c# - 用于密码验证的正则表达式

html - 访问网站 - WWW::Mechanize

Perl: 找不到 nmake

python - 带条件的正则表达式大写单词

javascript - jQuery 选择器多选菜单/正则表达式