정규 표현식(Regular expression)

정규 표현식(Regular expression)에 대해서 알아보겠습니다.



정규 표현식은 무엇인가를 찾을 때, 유용하게 사용할 수 있습니다.


정규 표현식 동작을 확인할 수 있는 사이트입니다.



정규 표현식에는 메타 문자들이 있습니다. (*, ., \ 등 )

메타 문자들은 앞에 있는 하나의 문자에만 적용됩니다.


예를 들어, AB*C 면 '*'는 B에만 적용됩니다.

AC, ABC, ABBC, .... 등이 찾아질 것입니다.


예외적인 메타 문자가 있는데, 그것은 '|'입니다.

예를 들어, AB|C 이면 AB 또는 C입니다.

이처럼, '|'는 단어 단위입니다.


참고로, '_'는 문자로 취급됩니다.


예시는 아래에서 확인하실 수 있습니다.




'^'

시작을 찾는 표현입니다.

^H = 시작이 H인 지점입니다.



'\A'

시작을 찾는 표현입니다.

\AH = 시작이 H인 지점입니다.



'$'

끝을 찾는 표현입니다.

e$ = 끝이 e로 끝나는 지점입니다.



'\Z'

끝을 찾는 표현입니다.

e\Z = 끝이 e로 끝나는 지점입니다.



'.'

a-z, A-Z, 특수문자, 0-9, 공백들 중에서 하나를 찾는 표현입니다.



'|'

두 가지 중에 하나를 찾는 표현입니다.

단어 단위로 적용됩니다.

h|f = h 또는 f를 찾습니다.

po|up = po 또는 up을 찾습니다.




'[]'

'|' 적용을 여러 개 할 때 사용합니다.

[hfo] = h 또는 f 또는 o를 찾습니다.



'-'

'[]'와 함께 쓰이며, 순차적인 단어의 범위 지정할 때 사용됩니다.

a-z = a에서 z까지를 나타냅니다.



'[^]'

'[]'에 포함된 문자를 제외한 나머지를 '또는'으로 찾습니다.

[^hfo] = 'h', 'f', 'o'를 제외한 나머지 문자들을 '또는'으로 찾습니다.



'()'

특정 범위를 지정하고 싶을 때 사용합니다.

h(e|a)llo = hello 또는 hallo를 찾습니다.



'?'

없거나, 하나만 있는 것을 찾습니다.

hell?o = helo 또는 hello를 찾습니다.



'*'

0부터 무한까지의 개수로 찾습니다.

hel*o = heo, helo, hello, helllo, hellllo, helllllo ,...를 찾습니다.



'+'

1부터 무한까지의 개수로 찾습니다.

hel+o = helo, hello, helllo, hellllo, helllllo ,...를 찾습니다.



'{최소,최대}'

최소 개수부터 최대 개수까지 탐색합니다.

hel{1,2}o = helo, hello를 찾습니다.

'{ ,최대}'처럼 최솟값을 생략하고 표현하면, 0부터 최대까지를 찾습니다.



'\'

구분자라고 부르며, 특수한 기능이 있습니다.

메타 문자 기능 말고, 메타 문자를 검색하고 싶을 때, 구분자를 사용합니다.

\* = '*' 메타 문자가 아닌 문자 '*'를 검색



'\b'

단어 처음과 끝의 공백 또는 특수문자('_'는 문자로 취급)입니다.

hello\b = 전체 문자열이 'hello!@#$ helloa'라면, 'hello!@#$'에서 hello만 찾아냅니다. ('helloa'는 무시)



'\B'

첫 번째 문자를 제외한, 문자 사이의 단어를 찾아냅니다.

\Be = 전체 문자열이 'hello ell'라면, 'hello' 안의 'e'만 찾아냅니다. ('ell'은 무시)



'\w'

숫자, 영어 그리고 모든 문자를 찾습니다.

\w = [a-zA-Z0-9_]



'\W'

숫자, 영어 그리고 모든 문자를 제외한 나머지를 찾습니다. (특수문자, 공백 등)

\W = [^a-zA-Z0-9_]



'\s'

공백문자를 찾습니다. ('\n' 등)

\s = ' '



'\S'

공백 문자를 제외한 나머지를 찾습니다.



'\d'

모든 숫자를 찾습니다.

\d = [0-9]



'\D'

숫자를 제외한 나머지를 찾습니다.



'\t'

'\t' 문자를 찾습니다.



'\n'

'\n' 문자를 찾습니다.



'{숫자}'

숫자만큼의 문자를 찾습니다.

h{2} = hh를 찾습니다.

\S{2} = 길이가 2인 모든 문자를 찾습니다.



끝.


카테고리: re, Python

댓글

이 블로그의 인기 게시물

Python urllib.parse.quote()

Python OpenCV 빈 화면 만들기

tensorflow tf.random.uniform()

Android Notification with Full Screen

KiCad 시작하기 2 (PCB 만들기)

Android Minimum touch target size

Python bs4.SoupStrainer()

KiCad 시작하기 4 (기존 회로도 수정 및 추가)

음악 총보(Score), 파트보(Part)

tensorflow tf.expand_dims()