正则表达式 – 即使可能进行多次匹配,Perl正则表达式也只返回列表上下文中的一个值

前端之家收集整理的这篇文章主要介绍了正则表达式 – 即使可能进行多次匹配,Perl正则表达式也只返回列表上下文中的一个值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用这种perl正则表达式:

/(^.*)XXX/g

我希望这个正则表达式匹配该类型的文本

******XXX****XXX***XXX

所以在这种情况下,正则表达式将匹配3次并提供以下结果:

******XXX****XXX***
******XXX****
******

但是,当我把这个正则表达式放在这样的列表上下文中时

while($_=~/(^.*)XXX/g)

只有一场比赛,而且是

******XXX****XXX***

我哪里错了?

解决方法

你需要改变你的循环:

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

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

猜你在找的正则表达式相关文章