如果regex
是一個正則表達式,我可以捕獲它的兩個重複這樣的:如何在Perl中捕獲所有量化的正則表達式匹配?
if (/(regex)(regex)/) {
print $1;
print $2;
}
但是,這是不好的Perl,因爲應該使用{2}
量詞,和壞的通用編程風格,因爲它重複的代碼。所以我想這樣做:
if (/(regex){2}/) {
print $1;
print $2;
}
但這不起作用,只有第一個匹配打印。
有沒有辦法打印兩個匹配,而不是重複代碼?
我想你可能會把你的問題抽象得離實際問題太遠而讓人困惑。如果這是真正的問題,我只會寫'print $ 1 if /(regexregex)/'。那你爲什麼不能那樣做? – Borodin
因爲正則表達式很長,我不想重複它 - 每個代碼應該在一個地方,代碼重複是不好的 –
然後,你需要使用正則表達式變量,如'我的$ re = qr/regex/x 2 '然後'if if(/ $ re /){...}' – Borodin