2014-09-29 2 views
1

Код находится здесь. У меня вопрос, так как $1 is Fred, и это замена, что означает замену 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

спасибо, сейчас я понимаю. Сначала он увидел «барни», а затем увидел «fred», «$ 1» остается последним значением. – Yaolong

1

Поскольку группа захвата не только захватывает строку Fred но и Barney. Поэтому, если двигатель регулярного выражения находится в Fred, он немедленно заменяет FRED-файл верхнего уровня, и если движок видит Barney, он заменяет его Uppercase Barney.

Смежные вопросы