假设我正在浏览原始html页面,寻找这个正则表达式。 (最后的引号是有意的)。Perl遍历每场比赛
m/(https?:\/\/.*?(?:'|"))/
这种模式可能匹配~100次。什么是常见的perl习惯用法/快速方法遍历所有捕获组匹配的列表?
假设我正在浏览原始html页面,寻找这个正则表达式。 (最后的引号是有意的)。Perl遍历每场比赛
m/(https?:\/\/.*?(?:'|"))/
这种模式可能匹配~100次。什么是常见的perl习惯用法/快速方法遍历所有捕获组匹配的列表?
从perlretut(很细的教程)
while ($x =~ /(\w+)/g) {
print "Word is $1, ends at position ", pos $x, "\n";
}
您可以同时使用while
与g
修饰符来遍历所有的比赛,与$1
你得到捕获组1的含量,并在此从教程的例子中,您也可以获得pos
的位置。
整体匹配“g
”修改返回列表上下文中获取匹配的列表:
say $_ for $str =~ /un($wanted)/g; # Prints only $wanted
@Zahid:我觉得你的做法是更紧凑。希望下面的代码片段将有助于了解您的例子
my $str = 'file_%date%_%name%_%lang%.txt';
my @ts = $str =~ /%([\w]+)%/g;# <----------Zahid said
print join(", ", @ts);
输出:
date, name, lang
感谢STEMA为recommanding perlretut:它是在Perl的正则表达式的真棒页;它涵盖了从初学者到高级的所有内容。 –
如果处理多行字符串和锚点,请不要忘记添加'm'修饰符^,$ –