regex - 将匹配的 Perl 正则表达式保存为变量

标签 regex perl scripting

我有一个简单的 Perl 正则表达式,需要将其保存为变量。

如果我打印它:

print($html_data  =~ m/<iframe id="pdfDocument" src=.(.*)pdf/g);

它打印了我想保存的内容,但是在尝试使用以下内容保存时:
$link = $html_data =~ m/<iframe id="pdfDocument" src=.(.*)pdf/g;

我得到一个“1”作为 $link 的值.我认为这是因为它找到了“1”匹配。但是我该如何保存比赛的内容呢?

最佳答案

注意/g 以获取所有匹配项。那些不可能放入标量中。你需要一个数组。

my @links = $html_data =~ m/<iframe id="pdfDocument" src=.(.*)pdf/g;

如果您只想要第一场比赛:
my ($link) = $html_data =~ m/<iframe id="pdfDocument" src=.(.*)pdf/;

注意括号(以及缺少现在无用的/g)。您需要它们在列表上下文中调用 m//。

关于regex - 将匹配的 Perl 正则表达式保存为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10113225/

相关文章:

python - 将一列中的文本拆分为三列

regex - Perl搜索并替换最后出现的字符

perl - 如何从 Perl 脚本中运行 Perl 脚本?

c - Perl 正则表达式在不使用可变长度后视的情况下查找打包结构的名称?

scripting - 对您有很大帮助的小工具/脚本?

javascript - 有人可以为我解释这个 JavaScript 正则表达式吗?

python - 如何让正则表达式返回字符串(而不是正则表达式对象)?

macos - 如何强制 CPAN 构建使用 INC 和 LIB 路径默认值 (cpanm+perlbrew)

windows - 如何使用 CLI 比较两个列表

linux - 如何在 shell 脚本中异步运行迭代