Perl에서 $ 1은 무엇을 의미합니까?
Perl에서 $ 1은 무엇을 의미합니까? 또한 $ 2는 무엇을 의미합니까? $ number 변수가 몇 개 있습니까?
$number변수는 일치하는 문자열의 일부가 포함 캡처 그룹 ( ... ) 일치가 성공하면 마지막 정규식 일치에 대한 패턴을.
예를 들어, 다음 문자열을 사용하십시오.
$text = "the quick brown fox jumps over the lazy dog.";
진술 후
$text =~ m/ (b.+?) /;
$1" brown" 텍스트와 같습니다 .
숫자 변수는 마지막 으로 성공한 일치 또는 적용한 대체 연산자의 일치입니다.
my $string = 'abcdefghi';
if( $string =~ /(abc)def(ghi)/ ) {
print "I found $1 and $2\n";
}
$ 1 등을 사용하기 전에 항상 일치 또는 대체가 성공했는지 테스트하십시오. 그렇지 않으면 다른 작업에서 남은 음식을 가져올 수 있습니다.
Perl 정규식은 perlre에 문서화되어 있습니다.
$ 1, $ 2 등은 마지막 으로 성공한 일치 의 캡처 값을 포함 합니다. 즉, 액세스하기 전에 일치가 성공했는지 확인하는 것이 중요합니다.
if ( $var =~ m/( )/ ) { # use $1 etc... }
문제의 예-$ 1에는 아래의 두 인쇄 문에 'Quick'이 포함되어 있습니다.
#!/usr/bin/perl
'Quick brown fox' =~ m{ ( quick ) }ix;
print "Found: $1\n";
'Lazy dog' =~ m{ ( quick ) }ix;
print "Found: $1\n";
다른 사람들이 지적했듯이 $ x는 일치하는 패턴의 섹션을 참조 할 수있는 정규식에 대한 캡처 변수입니다.
Perl은 또한 어떤 경우에는 인간이 기억하기 쉬운 명명 된 캡처를 지원합니다.
주어진 입력 : 111222
/(\d+)\s+(\d+)/
$ 1은 111입니다.
$ 2는 222입니다.
다음과 같이 말할 수도 있습니다.
/(?<myvara>\d+)\s+(?<myvarb>\d+)/
$ + {myvara}는 111입니다.
$ + {myvarb}는 222입니다.
이를 "일치 변수"라고합니다. 앞서 언급했듯이 여기에는 마지막 정규식 일치의 텍스트가 포함됩니다.
더 많은 정보는 여기 : http://cslibrary.stanford.edu/108/EssentialPerl.html
(해당 섹션을 찾으려면 '변수 일치'에 대한 CTRL-F)
캡처 그룹에 질문 했으므로 $ +에 대해서도 알고 싶을 것입니다 .. 꽤 유용합니다 ..
use Data::Dumper;
$text="hiabc ihabc ads byexx eybxx";
while($text=~/(hi|ih)abc|(bye|eyb)xx/igs)
{
print Dumper $+;
}
출력 :
$ VAR1 = 'hi';
$ VAR1 = 'ih';
$ VAR1 = '안녕';
$ VAR1 = 'eyb';
Perl의 "마법"변수에 관한 일반적인 질문은 Perl 사전 정의 된 변수 문서를 살펴보면 다음과 같이 대답 할 수 있습니다.
perldoc perlvar
그러나이 문서에서 $ 1 등을 검색하면 이러한 "숫자"변수에 대한 섹션을 제외하고 여러 위치에서 참조를 찾을 수 있습니다. 당신은 검색해야
$<digits>
나는 이것을 주석이나 편집 으로 Brian의 대답에 추가했을 것이지만 충분한 담당자가 없습니다. 누군가 이것을 추가하면이 대답을 제거하겠습니다.
The variables $1 .. $9 are also read only variables so you can't implicitly assign a value to them:
$1 = 'foo'; print $1;
That will return an error: Modification of a read-only value attempted at script line 1.
You also can't use numbers for the beginning of variable names:
$1foo = 'foo'; print $1foo;
The above will also return an error.
I would suspect that there can be as many as 2**32 -1 numbered match variables, on a 32bit compiled Perl binary.
참고URL : https://stackoverflow.com/questions/1036285/what-does-1-mean-in-perl
'IT TIP' 카테고리의 다른 글
| com.google.android.gms.internal.zzaja의 클래스 파일을 찾을 수 없습니다. (0) | 2020.11.23 |
|---|---|
| "<% = h […] %>"에서 "h"의 의미는 무엇입니까? (0) | 2020.11.23 |
| 복제 할 수없는 버그를 어떻게 수정합니까? (0) | 2020.11.23 |
| 면도기 구문-foreach 루프 (0) | 2020.11.23 |
| 파이썬에서 부울을 문자열에 어떻게 연결합니까? (0) | 2020.11.23 |