代碼在這裏。我的問題是因爲$1
是Fred
這是一個替代品,這意味着替換fred or barney
與Fred
,爲什麼不能像I saw FRED with FRED.
我不知道這裏發生了什麼。謝謝您的回答!Perl正則表達式替換
$_ = "I saw Barney with Fred.";
s/(fred|barney)/\U$1/gi; # $_ is now "I saw BARNEY with FRED."
代碼在這裏。我的問題是因爲$1
是Fred
這是一個替代品,這意味着替換fred or barney
與Fred
,爲什麼不能像I saw FRED with FRED.
我不知道這裏發生了什麼。謝謝您的回答!Perl正則表達式替換
$_ = "I saw Barney with Fred.";
s/(fred|barney)/\U$1/gi; # $_ is now "I saw BARNEY with FRED."
$1
指的是「無論第一個捕獲組捕獲什麼」。所以當(fred|barney)
匹配fred
,這就是$1
包含,但是當它匹配barney
時,那麼$1
包含什麼。
因爲捕獲組不僅抓住了串Fred
也Barney
。因此,如果正則表達式引擎看到Fred
,它會立即用大寫FRED替換,如果引擎看到Barney,則將其替換爲Uppercase Barney。
謝謝,現在我明白了。它首先看到'barney',然後看到'fred','$ 1'仍然是最後一個值。 – Yaolong 2014-09-29 07:55:59