Hi Hi

'python re'에 해당되는 글 1건

  1. 파이썬(python) - 정규표현식(re) 모듈

파이썬(python) - 정규표현식(re) 모듈

 

정규표현식(re) 모듈
- 특정한 규칙을 가진 문자열을 표현하는데 사용되는 형식 언어이다.
- 주어진 패턴으로 문자열을 검색/치환하는데 사용
- vi 편집기와 sed,grep 같은 프로그램에서 널리 사용됨
- re 모듈에 문자열 검색, 치환 , 분리와 같은 기능을 제공 한다.

정규표현식 문법

특수 문자

의미

.

개행 문자를 제외한 모든 문자와 매칭 된다. re.DOTALL 플래그가 셋팅되어져 있다면 줄바꿈 문자 까지도 매칭 대상에 포함된다.

^

문자열의 시작과 매칭된다.

re.MULTILINE 모드에서는 각 라인의 시작과 매칭된다.

[] 메타기호 안에서는 반대의 문자열을 취한다

) [^a-zA-Z0-9] 모든 알파벳과 숫자를 제외한 것 들과 매칭된다

$

문자열의 마지막 또는 문자열 끝의 개행 문자와 매칭되며, MULTILINE 모드 역시 개행 문자의 앞까지 매칭된다. ‘foo$’가 오직 foo 매칭되는 것과는 반대로 foo foo foobar 다 매칭된다. 흥미로운 것은 foo.$ ‘foo1\nfoo2\n’에서 찾는다면 foo2는 매치가 되지만 foo1MULTILINE 모드에서만 매칭이 된다는 것이다.

[]

문자 집합을 나타낸다. [abc]‘a’, ‘b’, ‘c’ 문자 중 하나를 의미한다. [a-c]와 같이 나타낼 수도 있다.

|

a|b 는 해당 문자가 ‘a’이거나 ‘b’라는 뜻이다.

()

규식을 그룹으로 묶는다. 이것은 match 또는 search를 통해 리턴되는 Match 오브젝트의 group를 호출할 때 사용된다.

 
반복 메타문자

문자

의미

*

0회 이상 반복

ca*t => ct, cat, caat, caaat, …

+

1회 이상 반복

ca+t => cat, caat, caaat

?

0회 혹은 1

ca?t => ct, cat

{m}

m회 반복

ca{2}t => caat

{m, n}

m회부터 n회까지 반복

ca{2,4}t => caat, caaat, caaaat

>>> import re

>>> re.match('ca{2}t', 'caat').group()

'caat'

>>> re.match('ca{2}t', 'cat').group()

Traceback (most recent call last):

File "<stdin>", line 1, in ?

AttributeError: 'NoneType' object has no attribute 'group'

>>> re.match('ca{2,4}t', 'cat').group()

Traceback (most recent call last):

File "<stdin>", line 1, in ?

AttributeError: 'NoneType' object has no attribute 'group'

>>> re.match('ca{2,4}t', 'caat').group()

'caat'

>>> re.match('ca{2,4}t', 'caaat').group()

'caaat'

>>> re.match('ca{2,4}t', 'caaaat').group()

'caaaat'

>>> re.match('ca{2,4}t', 'caaaaat').group()

Traceback (most recent call last):

File "<stdin>", line 1, in ?

AttributeError: 'NoneType' object has no attribute 'group'


최소 매칭

기호

의미

*?

* 와 같으나 문자열을 최소로 매칭한다.

+?

+ 와 같으나 문자열을 최소로 매칭한다.

??

? 와 같으나 문자열을 최소로 매칭한다.

{m, n}

{m,n}와 같으나 문자열을 최소로 매칭한다.

이스케이프 문자

종류

설 명

\\

역슬래쉬 문자

\d

모든 숫자와 매칭된다 [0-9]

\D

숫자가 아닌 모든 문자와 매칭된다 [^0-9]

\s

모든 화이트 스페이스 문자와 매칭된다 [\t\n\r\f\v]

\S

화이트 스페이스가 아닌 모든 문자와 매칭된다. [^\t\n\r\f\v]

\w

모든 숫자 또는 문자와 매칭된다. [a-zA-Z0-9]

\W

숫자 또는 문자가 아닌 모든 문자와 매칭된다 [^a-zA-Z0-9]

\b

단어의 경계를 나타낸다. 단어는 영문자 혹은 숫자의 연속 문자열로 가정한다.

\B

\b의 반대로 단어의 경계가 아님을 나타낸다.