Thursday, December 27, 2012

Perl 의 $1, $2, $3... 변수

1:  $_ = "ABC12DE3F4";  
2:  regexTest();  
3:  sub regexTest{  
4:       while (/(\d)/g){  
5:            print("$1 ");  
6:       }  
7:       print("\n");  
8:  }  
결과값은 1 2 3 4 와 같이 나온다.
$1, $2.. 는 최근에 행한 regular expression 에서 매칭된 값들이다.
매칭된 값이란 () 안에 있는 내용으로 위 코드에서는 (\d) 즉 매칭된 숫자열을 말한다.
4행에서 /(\d)/g 로 안쓰고 /\d/g 와 같이 쓰면 매칭은 되지만 $1 값이 세팅이 안되므로 에러가 난다.

 my $s = "98 ba 12 ka";  
   
 if($s =~ /([a-z]+)(\s+(\d+)\s+)/){  
      print "[$1]\n";  
      print "[$2]\n";  
      print "[$3]\n";  
 }  
결과값은 다음과 같이 나온다.
[ba]
[ 12 ]
[12]
즉 순서는 왼쪽에서 오른쪽 / 바깥쪽에서 안쪽이다.

참조 링크 : Perl Regular Expression 코딩예

키워드 : numbers, string, $number variables

No comments:

Post a Comment