假設我正在瀏覽原始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'修飾符^,$ –