IT/개발2015.01.05 16:25
  • 개요

정규식은 일반 문자와 메타문자로 알려준 특수문자로 구성된 텍스트의 패턴

패턴은 텍스트를 검색할 때 특정 문자열뿐만 아니라 하나 이상의 다양하고 복잡한 문자열 검사가 가능.

 

1)    반복 메타 문자

메타 문자

의미

*

0회 이상 반복

+

1회 이상 반복

?

0 or 1

{m}

m회 반복

{m,n}

m회부터 n회까지 반복


예제

-      ^a : a로 시작하는 문자열(ex - aa,ab,abc,abcde)

-      a+b? : a가 적어도 한번 이상 반복되고, 뒤에 b가 오는 문자열로 b는 있어도 없어도됨 (ex – ab,aab,aaa)

 

2)    매칭 메타 문자 

메타 문자

의미

.

임의의 한문자 의미

^

문자열의 시작과 매치

$

문자열의 마지막과 매치

[ ]

문자열 중 한 문자를 의미

|

또는 or을 의미

{ }

정규식을 그룹으로 묶음


예제

-      a$ : a로 끝나는 문자열(ex – aa,ba,cba)

-      ^ab$ : a로 시작하고 b로 끝나는 문자열(ex – ab,acb,adb,acgdb)

-      ^ab*c$ : a로 시작하고 b가 없거나 한번이상 반복되고 c로 끝나는 문자역

-      ^www : 시작 문자역이 www일 때 매칭(ex – www.test.com)

-      ^[A-Za-Z]{3}$ : 정확하게 3문자를 매칭(ex – abc,def,ghi )

-      a{2,3} : a 2번이나 3번 반복되는 문자열(ex – aa,aaa,beaa,geaaa)

-      ^a.{2,4}b$ : a로 시작되고 b로 끝나고 사이에 2-4개의 문자가 있는 문자열(ex – acdb,aertb,acdefb)

-      ^(1|2|3|4|5|6|7|8|9|0)+$or^[0-9]+$ : 숫자로만 된 문자열

-      t[ao]ook : taook,toook 와 부합

-      ^[1-9][0-9]*$ : 처음 숫자가 0이 아니고 끝까지 숫자에만 부합. (ex - 가격체크)

-      ^[0-9]+(\.[0-9]{2})?$ : 처음은 숫자, \.은 단지 점(.)만 표시.(ex - 3.23이나 3.38)


3)    이스케이프 기호

종류

의미

\\

역슬래쉬 문자 대체

\d

모든 숫자와 매치

\D

숫자가 아닌 문자와 매치

\s

공백 문자 매치

\S

공백문자가 아닌 것과 매치

\w

숫자 또는 문자와 매치

\W

숫자 또는 문자가 아닌 것과 매치

\b

단어의 경계를 나타냄

\B

단어의 경계가 아님을 나타냄

\A

문자열의 처음에만 일치

\Z

문자열의 끝에만 일치


예제

-      ^01(?:0|1[6-9])-(?:\d{3}|\d{4})-\d{4}$ : 휴대폰 문자열 배열

-      \d{6}\-[1-4]\d{6} : 주민 등록 번호 문자열

 

4)    최소 매칭을 위한 정규식

메타문자

의미

*?

*?와 같으나 문자열을 취소로 매치

+?

+와 같으나 문자열을 취소로 매치

??

?와 같으나 문자열을 최소로 매치

{m,n}?

{m,n}과 같으나 문자열을 최소로 매치

 

5)    정규식 문자 클래스

클래스

의미

[[:alpha:]]

[a-zA-Z]와 동일

[[:dlgit::]]

모든 숫자

[[:alnum:]]

모든 숫자나 문자

[[:space:]]

공백

[[:punct:]]

모든 구두점 기호

 


  • 정규식 테스트 해보기

http://rubular.com/


Posted by 말도