3.2. HTML 링크 추출 #
Perl
while($Html =~ m{<a/b([^>]+)>(.*?)</a>}ig) { my $Guts = $1; my $Link = $2; if($Guts =~ m{ /b HREF # "href" 속성 /s* = /s* # "="의 앞 (?: # 값은 "([^"]*)" # 큰 따옴표로 감싼 문자열 | # 또는 '([^']*)' # 작은따옴표로 감싼 문자열 | # 또는 ([^'">/s]+) # "기타 문자" ) }xi) { my $Url = $+; print $Url with link text: $Link\n"; } }
3.3. IP 주소 #
Perl
^([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5]\. ([01]?\d\d?[2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])$ # 유니코드 환경에서는 \d 가 ASCII 숫자가 아닌 문자에도 매치될 수 있다. # 이 경우 [0-9] 를 사용.
3.4. CSV 파일 파싱 #
※ 마이크로소프트 스타일의 CSV 형식
Perl
Perl
while($line =~ m{ (?:^|,) (?: " ((?:[^"]|"")*) " | ([^",]*)\ ) }gx) { if(defined $2) { $filed = $2; } else { $filed = $1; $filed =~ s/""/"/g; } print "[$filed]"; # 디버깅을 위해 필드를 출력한다. }
3.5. E-MAIL 매치 #
C++
string email = "[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}";
5.1. 한글(UTF-8) 적용 #
*이 코드는 유니코드 환경에서만 유효하다. 따라서 euckr로 인코딩 된 구문에서는 동작하지 않는다.
앨범 2000 ---- $1; # '앨범' $2; # '2000'
5.2. 수량자 #
정규표현식에는 탐욕적 수량자(Greedy Quantifier)와 게으른 수량자(Lazy Quantifier)가 있다. 탐욕적 수량자는 가능한 큰 블록를 찾으려고 하고(예:.+) 작은 블록을 찾으려면 게으른 수량자를 사용한다. (예:.+?)