我知道匹配,prematch和postmatch預定義變量。我想知道是否有類似的s ///運算符的評估替換部分。Perl正則表達式替換字符串特殊變量
這將在動態表達式中特別有用,因此不必在第二次進行評估。
例如,我目前有%regexs這是各種搜索和替換字符串的散列。
這裏有一個片段:
while (<>) {
foreach my $key (keys %regexs) {
while (s/$regexs{$key}{'search'}/$regexs{$key}{'replace'}/ee) {
# Here I want to do something with just the replaced part
# without reevaluating.
}
}
print;
}
有沒有一種方便的方法來做到這一點? Perl似乎有這麼多便捷的捷徑,而且要評估兩次似乎是一種浪費(這似乎是另一種選擇)。
編輯:我只是想舉一個例子:$ regexs {$鍵} {「取代」}可能是字符串「‘$ 2 $ 1’」,從而換入字符串$ regexs一些文本的位置{ $ key} {'search'}可能是'(foo)(bar)' - 從而導致「barfoo」。我試圖避免的第二個評估是$ regexs {$ key} {'replace'}的輸出。
Thx,但我的問題可能不清楚。我使用/ ee修飾符來評估$ regexs {$ key} {'replace'}的計算結果,這可能取決於$ regexs {$ key} {'search'}。 – 2009-11-21 22:58:45