본문 바로가기
문화&기술

정규 표현식(Regular expression)

by 엉클창 2020. 9. 10.

 

1. 정규 표현식이란?

 정규 표현식(Regexp or Regex)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어.

  정규 표현식은 많은 텍스트 편집기와 프로그래밍 언어에서 문자열의 검색 치환을 위해 지원하고 있습니다.

 

2. 정규 표현법

문  자

 설   명

 예   제 

 \

 다음에 오는 문자를 특수 문자, 리터럴, 역참조 또는 8진수 이스케이프로 표시합니다. 

 "\\"는 "\"를 찾고 "\("는 "(" 찾습니다.

 ^

 입력 문자열의 시작 부분에서 위치를 찾습니다. 

 ^abc -> abcdef

 ^a?bc -> bcdef, abcdef

 $

 입력 문자열의 끝 부분에서 위치를 찾습니다.  

 t$ -> eat

 동$ -> 홍길

 *

 앞의 문자나 부분식을 0개 이상 찾습니다. 

 ab* -> ab, aabb, abb, aaaa

 ab*d -> ad, abd, abbbbd 

 +

 앞의 문자나 부분식을 1개 이상 찾습니다. 

 zo+ -> zo, zoo 

 ?

 앞의 문자나 부분식을 0개나 1개 찾습니다. 

 te?n -> ten, tn
 teen(x) 

 {n}

 n의 수만큼 정확하게 앞글자를 반복합니다.

 te{2}n -> teen 

 {n, m}

 n과 m사이의 수만큼 앞글자를 반복 

 te{1,2}n -> ten, teen 

 .

 New Line을 제외한 모든 글자 

 .n -> an apple, on the tree 

 (pattern)

 패턴을 체크하고 체크한 값을 변수로 저장

 (f..) (b..) -> foo, bar 

 (?:pattern)

 패턴을 체크하고 체크한 값을 변수로 저장하지 않음 

 (?:f..) (b..) -> bar

 (?=pattern)

 패턴에 일치하는 문자열이 시작된 위치에서 검색 문자열을 찾습니다.

 blah(?=soft|hard) -> blahsoft, blahhard, blah hard(x) 

 (?!pattern)

 패턴에 일치하지 않는 문자열이 시작된 위치에서 검색 문자열을 찾습니다.

 blash(?!hard) -> blahsoft, blah soft 

 x|y

 x 또는 y를 찾습니다. 

 z|food -> z, food

 (z|f)ood -> zood, food 

 [xyz]

 문자 집합, 괄호로 묶인 문자 중 하나를 찾습니다. 

 [abc] -> plain 

 [^xyz]

 음수 문자 집합, 괄호로 묶이지 않는 문자를 찾습니다. 

 [^a-z] -> I'm a good man, I am A Good Man

 [a-z]

 문자의 범위. 지정한 범위에서 문자를 찾습니다. 

 [a-z]{4,} -> She sells sea shells by...

 [^a-z]

 음의 범위 문자. 지정한 범위에서 있지 않은 문자를 찾습니다. 

 [^a-z] -> KNOW know  

 \b

 단어와 공백 사이의 위치를 찾습니다. 

 er\b -> naver, verb(x)

 \B

 \b 를 제외한 전부를 찾습니다.

 er\B -> verb, naver(x)

 \cx

 x로 표시된 제어 문자를 찾습니다. 

 \cM -> Control-M or 캐리지 리턴 문자를 찾습니다. 

 \d

 숫자를 찾습니다.

 == [0-9]  

 \D

 숫자가 아닌 문자를 찾습니다.

 == [^0-9] 

 \f

 용지 공급 문자를 찾습니다. 

 == \xOc, \cL

 \n 

 줄 바꿈 문자를 찾습니다. 

 == \xOa, \cJ 

 \r 

 캐리지 리턴 문자를 찾습니다. 

 == \xOd, \cM 

 \s

 공백, 탭, 용지 공급 등을 비롯한 모든 공백 문자를 찾습니다. 

 == [\f\n\r\t\v] 

 \S 

 공백이 아닌 문자를 찾습니다. 

 == [^\f\n\r\t\v] 

 \t

 탭 문자를 찾습니다. 

 == \x09, \cL 

 \v

 새로 탭 문자를 찾습니다. 

 == \x09, \cK 

 \w

 밑줄을 비롯한 모든 문자를 찾습니다. 

 == [A-Za-z0-9_] 

 \W 

 비단어 문자를 찾습니다. 

 == [^A-Za-z0-9_] 

 \xn

 n을 찾는데, 여기서 n은 16진수 이스케이프 값입니다. (ASCII 코드가 정규식에 사용될 수 있습니다.)

 \x41 -> A

 \x041 -> \x04 & 1

 

[a-z] : 소문자

[A-Z] : 대문자

[a-zA-Z] : 영문자

[가~힣] : 완성형 한글

 

연습 사이트 :

http://gskinner.com/RegExr/

 

참고 : 

MSDN 포럼

http://kio.zc.bz/Lecture/regexp.html

'문화&기술' 카테고리의 다른 글

예술사를 통해 본 대상지시성과 자기지시성의 문제  (0) 2022.02.21
미장아빔 요약  (0) 2022.02.21
미장아빔(Mise en abyme)  (0) 2022.02.21
서비타이제이션이란?  (0) 2020.06.20
스마일 커브(Smile Curve)  (0) 2020.06.20

댓글