본문 바로가기
self.python

[python] 정규표현식(Regular Expressions)과 메타문자 정리

by 톤토니 2022. 5. 12.
반응형

 

 

정규표현식(Regular Expressions)

 

특정 규칙을 가진 문자열을 표현하는 방식이다. 

 

'이름 : XXX, 나이 : 99, 국적 : 한국, 010-1234-1234, 123456-1234567, 취미 : python'

 

예를 들어 위와 같은 주민등록번호가 포함된 긴 문자열을 입력 받았을 때, 주민등록번호만 뽑아내고 싶다면 ?

숫자 6개로 시작해서 중간에 '-' 부호가 들어가고 숫자 7개가 연이어 나와 있는 부분을 가져오면 된다.

 

전화번호가 포함된 긴 문자열을 입력 받았을 때, 전화번호만 뽑아내고 싶다면?

010 으로 시작해서 숫자 4개씩 '-' 부호를 사이에 끼고 있는 부분을 가져오면 된다.

 

그런 것들을 정규표현식을 사용하여 해결할 수 있다.

 

re 라이브러리를 import 해주어야 하고, re.findall('정규표현식', '문장') 을 많이 사용한다.

 

import re

 

 

정규표현식과 메타문자를 이용하여 문자열에서 원하는 정보를 찾거나 문자열을 정리할 수 있다.

 

 

문자
e* e0회 이상 있음
e+ e1회 이상 있음
e? e0또는 1회 있음
[a-z] 알파벳 소문자
[A-Z] 알파벳 대문자
[a-zA-Z] 알파벳 전부 다
[^a-z] 알파벳 소문자를 제외한 것 중 하나
[-] 한글 전부 다
. 모든 문자 하나
(?i) 대소문자 구분하지 않고 찾음
{횟수} \d{4} 이면 숫자가 4개 이어져 있는 문자열을 나타냄

 

 

문자 예시
^ 문자열 시작 ^010 : 010으로 시작하는 문자열을 매치
$ 문자열 끝 ist$ : ist로 끝나는 문자열을 매치
\d 숫자
\D 숫자가 아닌 모든 문자
. 모든 문자
\ 기호를 문자 그대로 찾을 때 필요 문자열 내에서 ^ $ 를 찾아야 할 때, \^ 또는 \$ 이렇게 쓸 수 있다.
\n 개행문자
\t 가로 탭 문자
\s 공백, 탭 문자
\S 공백, 탭 문자를 제외한 모든 문자
\w 알파벳 대소문자, 숫자, 밑줄( _ )
\W \w 이 나타내는 문자들을 제외한 모든 문자
| Or 조건식 여러 조건을 써야 할 때

 

 

예시

 

import re
text = '이름 : XXX, 나이 : 99, 국적 : 한국, 010-1234-1234, 123456-1234567, 취미 : python'

re.findall('\d{6}\D\d{7}', text) # 주민등록번호
#['123456-1234567']

re.findall('\s[가-힣]{2}', text) # 두 글자 단어 다 뽑아오기
#[' 나이', ' 국적', ' 한국', ' 취미']

re.findall('p.*', text) # p로 시작하는 단어 가져오기
#['python']

 

 

 

 

 

 

 

 

반응형

댓글