괄호 안에있는 내용을 추출하고 변수에 포팅 할 perl 코드를 만들고 싶습니다. "(05-NW) HPLaserjet" "05-NW"이 같은 뭔가가되어야 : "(" 괄호 안에있는 내용을 추출하고 변수로 포팅하는 perl 코드를 만들고 싶습니다.
- 캐치 (1)
가 어떻게 이렇게 가겠어요 = 변수?
괄호 안에있는 내용을 추출하고 변수에 포팅 할 perl 코드를 만들고 싶습니다. "(05-NW) HPLaserjet" "05-NW"이 같은 뭔가가되어야 : "(" 괄호 안에있는 내용을 추출하고 변수로 포팅하는 perl 코드를 만들고 싶습니다.
가 어떻게 이렇게 가겠어요 = 변수?
use warnings;
use strict;
my $s = '(05-NW)HPLaserjet';
my ($v) = $s =~ /\((.*)\)/; # Grab everything between parens (including other parens)
$v =~ s/\s//g; # Remove all whitespace
print "$v\n";
__END__
05-NW
당신은 (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
정규 표현식에 대한 작업입니다. 괄호는 정규 표현식에서 메타 문자로 사용되고 또한 백 슬래시로 이스케이프 된 예제의 일부이기 때문에 혼란스럽게 보입니다.
C:\temp $ echo (05-NW)HPLaserjet | perl -nlwe "print for m/\(([^)]+)\)/g"
일치 여는 괄호는 캡처 그룹 일치 닫는 괄호 닫고 캡처 그룹, 일치 닫는 괄호가없는 하나 개 이상의 문자를 시작합니다.
완료! 고맙습니다! –