regex - Perl 正则表达式在列表上下文中只返回一个值,即使可能有多个匹配

标签 regex perl

我正在使用这种 Perl 正则表达式:

/(^.*)XXX/g
我希望这个正则表达式匹配类型的文本
******XXX****XXX***XXX
这样在这种情况下,正则表达式将匹配三次并提供以下结果:
******XXX****XXX***
******XXX****
******
但是,当我将这个正则表达式放在这样的列表上下文中时
while($_=~/(^.*)XXX/g)
只有一场比赛,它是
******XXX****XXX***
我哪里错了?

最佳答案

你需要改变你的循环:

$_ = "******XXX****XXX***XXX";
while(/(.*)XXX/) {
    print $1,"\n";
    $_=$1;
}

$1 中找到匹配的结果而你匹配的变量是 $_ .

关于regex - Perl 正则表达式在列表上下文中只返回一个值,即使可能有多个匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14600301/

相关文章:

json - perl:将字符串转换为utf-8进行json解码

regex - 如何使用 Perl 正则表达式删除所有连字符?

regex - htaccess动态重写规则,统计字符数

regex - 如何使用 Perl 解析 runmqsc 命令输出?

java - 正则表达式匹配器在 JUnit 上工作但在 Servlet 容器上失败

mysql - SHOW CREATE PROCEDURE 与 perl DBI 不一致的结果

perl - 使用来自另一个包的排序子程序

MySQL 查询使用 REGEXP 匹配前 7 个字符来查找重复项

php - .htaccess 重写友好的 URL

windows - Time::ParseDate 安装失败