Perl遍历每场比赛

pro*_*nce 36 regex perl

假设我正在浏览一个原始html页面,寻找这个正则表达式.(最后的引号是有意的).

m/(https?:\/\/.*?(?:'|"))/
Run Code Online (Sandbox Code Playgroud)

这种模式很可能匹配~100次.什么是常见的perl习语/迭代所有捕获组匹配列表的快速方法?

ste*_*ema 58

来自perlretut(非常精细的教程)

while ($x =~ /(\w+)/g) {
        print "Word is $1, ends at position ", pos $x, "\n";
    }
Run Code Online (Sandbox Code Playgroud)

您可以whileg修改器一起使用来迭代所有匹配项,同时$1获取捕获组1的内容,在本示例中,您也可以获得该位置pos.


Zai*_*aid 7

全局匹配' g'修饰符返回列表上下文中捕获的匹配列表:

say $_ for $str =~ /un($wanted)/g;    # Prints only $wanted
Run Code Online (Sandbox Code Playgroud)