정규표현식

Edit Diff Refresh Backlink Random Search History Help Setting



1. 정규 표현식 #

taiga_exp.png
[PNG image (20.97 KB)]


2. 기본 문법 #

2.1. 한 장으로 보는 정규표현식 #

펼치기
regular-expressions-cheat-sheet-v2.png
[PNG image (77.39 KB)]



3. 사용례 #

3.1. HTML 태그 매치 #

Perl
<("[^"]*"|'[^']*'|[^'">])*>

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
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}";

3.6. 두 개 이상의 공백을 하나로 치환 #

PHP
$description = preg_replace("/(\s){2,}/", '$1', $description);

4. 각 언어별 용례 #

5. 기타 #

5.1. 한글(UTF-8) 적용 #

*이 코드는 유니코드 환경에서만 유효하다. 따라서 euckr로 인코딩 된 구문에서는 동작하지 않는다.

앨범 2000
----
$1; # '앨범'
$2; # '2000'

5.2. 수량자 #

정규표현식에는 탐욕적 수량자(Greedy Quantifier)와 게으른 수량자(Lazy Quantifier)가 있다. 탐욕적 수량자는 가능한 큰 블록를 찾으려고 하고(예:.+) 작은 블록을 찾으려면 게으른 수량자를 사용한다. (예:.+?)

5.3. 온라인 테스터 #

http://www.regexr.com/
http://regex101.com/ 매치된 것도 보여준다.

6. 링크 #

http://blog.outsider.ne.kr/360 알고 있어야 할 8가지 정규식 표현 from nettuts+


Show Comments