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";
}
}
{
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] 를 사용.
([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]"; # 디버깅을 위해 필드를 출력한다.
}
(?:^|,)
(?:
"
((?:[^"]|"")*)
"
|
([^",]*)\
)
}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)가 있다. 탐욕적 수량자는 가능한 큰 블록를 찾으려고 하고(예:.+) 작은 블록을 찾으려면 게으른 수량자를 사용한다. (예:.+?)
Show Comments

