2014-09-29 67 views
1

代碼在這裏。我的問題是因爲$1Fred這是一個替代品,這意味着替換fred or barneyFred,爲什麼不能像I saw FRED with FRED.我不知道這裏發生了什麼。謝謝您的回答!Perl正則表達式替換

$_ = "I saw Barney with Fred."; 
s/(fred|barney)/\U$1/gi; # $_ is now "I saw BARNEY with FRED." 

回答

0

$1指的是「無論第一個捕獲組捕獲什麼」。所以當(fred|barney)匹配fred,這就是$1包含,但是當它匹配barney時,那麼$1包含什麼。

+0

謝謝,現在我明白了。它首先看到'barney',然後看到'fred','$ 1'仍然是最後一個值。 – Yaolong 2014-09-29 07:55:59

1

因爲捕獲組不僅抓住了串FredBarney。因此,如果正則表達式引擎看到Fred,它會立即用大寫FRED替換,如果引擎看到Barney,則將其替換爲Uppercase Barney。