본문 바로가기
BackEnd/파이썬

정규표현식

by whdgus928 2023. 2. 16.

정규 표현식에서는 메타 문자들을 사용하여 특별한 의미를 갖게한다.

. ^ $ * + ? { } \ | ( )

 

문자 클래스 [ ]

문자 클래스로 만들어진 정규식은 [ ] 사이의 문자들과 매치한다는 의미이다

예제를 통해 자세하게 이해해보자

 

정규표현식이 [abc]라면 a,b,c 중 한 개의 문자와 매치된다

[a-z]와 같이 하이픈을 사용하게 되면 두 문자 사이의 범위를 의미한다

 

[a-zA-Z]: 알파벳 모두를 의미

[0-9]: 숫자를 의미

[^0-9]: 숫자가 아닌 문자만 매치

 

위와 같은 표현들은 자주 사용하는 정규 표현식이기 때문에 별도의 표기법으로 더 간단하게 사용할 수 있다.

 

\d: 숫자와 매치

\D: 숫자가 아닌 것과 매치

\s: whitespace 문자와 매치

\S: whitespace 문자가 아닌 것과 매치

\w: 문자와 숫자와 매치

\W: 문자와 숫자가 아닌 문자와 매치

※ 대문자로 사용된것은 소문자의 반대이다

 

Dot(.): . 메타문자는 줄바꿈 문자인 \n을 제외한 모든 문자와 매치됨을 의미한다

a.b: a와 b라는 문자 사이에 어떤 문자가 들어가도 모두 매치된다

a.b aab Yes  
a0b Yes  
abc No a와 b 문자 사이에 어떤 문자라도 하나는 있어야 해서 일치x

a[.]b: [] 내에 .은 문자 . 그대로를 의미한다

 

반복(*)

* 바로 앞에 있는 문자가 0부터 무한대로 반복될수있다는 의미다

ca*t 하게 되면 ct, cat, caaat 모두 매치된다

 

반복(+)

최소 1번이상 반복될때 사용

ca+t ct No  
cat Yes  
caaat Yes  

반복({m,n},?)

반복 횟수를 정해놓고 사용

ca{2}t: a가 2번 반복되면 매치

ca{2,5}t: a가 2~5번 반복되면 매치

ab?c: b가 0~1번 사용되면 매치

 

파이썬 re 모듈

match(): 문자열의 처음부터 정규식과 매치되는지 조사

search(): 문자열 전체를 검색하여 정규식과 매치되는지 조사

findall(): 정규식과 매치되는 모든 문자열을 리스트로 리턴한다

finditer(): 정규식과 매치되는 모든 문자열을 반복 가능한 객체로 리턴한다

import re
p=re.compile('[a-z]+')
m=p.match('python')
if m:
    print(m.group())
else:
    print('No Match')

#search
m=p.search('python')
print(m)

#findall
result=p.findall('life is too short')
print(result)

#finditer
result=p.finditer('life is too short')
print(result)
for r in result: print(r)

match 객체의 메서드

group(): 매치된 문자열 리턴

start(): 매치된 문자열의 시작 위치

end(): 매치된 문자열의 끝 위치

span(): 매치된 문자열의 (시작,끝)에 해당되는 튜플 리턴

반응형

댓글