Contents
1
.
정규 표현식
2
.
기본 문법
2.1
.
한 장으로 보는 정규표현식
3
.
사용례
3.1
.
HTML 태그 매치
3.2
.
HTML 링크 추출
3.3
.
IP 주소
3.4
.
CSV 파일 파싱
3.5
.
E-MAIL 매치
3.6
.
두 개 이상의 공백을 하나로 치환
4
.
각 언어별 용례
4.1
.
C++0x
5
.
기타
5.1
.
한글(UTF-8) 적용
5.2
.
수량자
5.3
.
온라인 테스터
6
.
링크
1
.
정규 표현식
#
[PNG image (20.97 KB)]
2
.
기본 문법
#
2.1
.
한 장으로 보는 정규표현식
#
펼치기
[PNG image (77.39 KB)]
3
.
사용례
#
3.1
.
HTML 태그 매치
#
Perl
Copy
<(
"
[^
"
]*
"
|'[^']*'|[^'
"
>])*>
3.2
.
HTML 링크 추출
#
Perl
Copy
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
Copy
^([
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
Copy
while
(
$line
=~
m{
(?:
^|,
)
(?:
"
((?:[^"]
|""
)*)
"
|
([^",]*)
\
)
}
gx
)
{
if
(
defined
$2
) {
$filed
=
$2
;
}
else
{
$filed
=
$1
;
$filed
=~
s/
""
/
"
/
g
;
}
print
"
[
$filed
]
"
;
# 디버깅을 위해 필드를 출력한다.
}
3.5
.
E-MAIL 매치
#
C++
Copy
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
Copy
$description = preg_replace("/(\s){2,}/", '$1', $description);
4
.
각 언어별 용례
#
4.1
.
C++0x
#
C++/(C++0x)정규표현식
5
.
기타
#
5.1
.
한글(UTF-8) 적용
#
if ($line =~ m/(?<=[^가-힣])([^\s]*)\s(\d+)(?=[^가-힣])/) {
*이 코드는 유니코드 환경에서만 유효하다. 따라서 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+
Document
정규표현식
Retrieved from https://hyacinth.kr:443/moniwiki/wiki.php/정규표현식
last modified 2015-02-27 10:53:32