2011-05-10 4 views

답변

2

당신은 (perlretut 참조)과 일치하는 정규 표현식을 사용하여 값을 캡처 할 수 있습니다. 목록에 할당하면 캡처를 명명 된 변수에 넣을 수 있습니다. 전역 변수 $1, $2 등도 캡처 그룹에 사용되므로 원하는 경우 목록 할당 대신 사용할 수 있습니다.

use strict; 
use warnings; 

while (<>) # read every line 
{ 
    my ($printer_code) = m/ 
    \(    # Match literal opening parenthesis 
     ([^\)]*)  # Capture group (printer_code): Match characters which aren't right parenthesis, zero or more times 
    \)/x;   # Match literal closing parenthesis 
    # The 'x' modifier allows you to add whitespace and comments to regex for clarity. 
    # If you use it, make sure you use '\ ' (or '\s', etc.) for actual literal whitespace matching! 
} 

__DATA__ 
(05-NW)HPLaserjet 
3

정규 표현식에 대한 작업입니다. 괄호는 정규 표현식에서 메타 문자로 사용되고 또한 백 슬래시로 이스케이프 된 예제의 일부이기 때문에 혼란스럽게 보입니다.

C:\temp $ echo (05-NW)HPLaserjet | perl -nlwe "print for m/\(([^)]+)\)/g" 

일치 여는 괄호는 캡처 그룹 일치 닫는 괄호 닫고 캡처 그룹, 일치 닫는 괄호가없는 하나 개 이상의 문자를 시작합니다.

관련 문제