2014-09-29 2 views
1

코드는 여기입니다. 제 질문은 $1Fred이고 이것은 대체입니다. 이는 fred or barneyFred으로 바꾸는 것을 의미합니다. 왜 대답이 I saw FRED with FRED. 일 수 없는지 여기에 무슨 일이 일어나고 있는지 전혀 모르겠습니다. 답변 주셔서 감사합니다!펄 정규 표현식 교체

$_ = "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

1

캡처 그룹이 문자열 Fred뿐만 아니라 Barney을 캡처뿐만 아니라 때문입니다. 따라서 정규 표현식 엔진이 Fred을 보면 대문자 FRED로 즉시 바뀌고 엔진이 Barney를 보면 대문자 바니로 바뀝니다.