Perl Regular Expressions by Example → 가장 알기 쉬운 설명. 처음 보기에 좋음
Steve Litt's Perls of Wisdom: Perl Regular Expressions → 매우 설명이 잘돼 있음
String matching, Regular Expressions → $_ 에 대한 설명이 있음
A라는 regular expression 이 있을때 스트링 $s 가 매치하는지 비교하려면
if($s =~ /A/) 와 같이 쓴다. 매치하지 않는지 비교하려면 if($s !~ /A/) 와 같이 쓴다.
m 은 주어진 regular expression 에 match 되는 것을 찾을 때 쓰이고
s 는 주어진 regular expression 에 match 되는 것을 바꿔치기 (substitution) 할때 쓰인다.
$string =~ m/Bill Clinton/; #return true if var $string contains the name of the president
$string =~ s/Bill Clinton/Al Gore/; #replace the president with the vice president
다음 둘은 같다.
$string =~ m/Bill Clinton/; #return true if var $string contains the name of the president
$string =~ /Bill Clinton/; #same result as previous statement
^는 라인의 처음을 의미한다.
$string =~ m/^Bill Clinton/; #true only when "Bill Clinton" is the first text in the string
$는 라인의 끝을 의미한다.
$string =~ m/Bill Clinton$/; #true only when "Bill Clinton" is the last text in the string
i는 case insensitive한 오퍼레이션을 의미.
$string =~ m/Bill Clinton/i; #true when $string contains "Bill Clinton" or BilL ClInToN"
$_ 는 "default parameter" 로, 코드를 짧게 쓸수 있게 해준다.
다음 둘은 같은 코드이다.
$s = "a lewd sentence about sex";
if ($s =~ /sex/)
{
print "$s -> This is for adults!\n";
}
$_ = "a lewd sentence about sex";
if (/sex/)
{
print "$_ -> This is for adults!\n";
}
예제) $1 와 modifier g $1는 매칭된 패턴에 걸린 첫 결과값이다. 처음 결과값만이 아니라 스트링 전체를 다 검색하려면 modifier g (global search)를 사용하면 된다 (좌에서 우로 스트링 전체를 다 검색).
$mystring = "[2004/04/13] The date of this article.";
while($mystring =~ m/(\d+)/g) {
print "Found number $1.";
}
코드 출처 : Perl Regular Expressions by Example
다음 코드의 결과는 "A B C D E F "가 프린트되지만 modifier g 를 빼고 실행하면 A만 무한히 프린트된다. my $_ = "ABCDEF";
charByCharMethod();
sub charByCharMethod{
while (/(.)/g) { # . is never a newline here
print("$1 ");
}
print("\n");
}
Regular expression 의 중요성
Without regular expressions, Perl would be a fast development environment. Probably a little faster than VB for console apps. With the addition of regular expressions, Perl exceeds other RAD environments five to twenty-fold in the hands of an experienced practitioner, on console apps whose problem domains include parsing (and that's a heck of a lot of them)...
키워드 : match, =~ 심볼
관련링크 :
Perl Regular Expressions by Example
Perl의 Regular Expression에 쓰이는 special characters
Perl의 Predefined Names ... $_ 등
Regular expressions in Perl
No comments:
Post a Comment