반응형
정규표현식(Regular Expressions)
특정 규칙을 가진 문자열을 표현하는 방식이다.
'이름 : XXX, 나이 : 99, 국적 : 한국, 010-1234-1234, 123456-1234567, 취미 : python'
예를 들어 위와 같은 주민등록번호가 포함된 긴 문자열을 입력 받았을 때, 주민등록번호만 뽑아내고 싶다면 ?
숫자 6개로 시작해서 중간에 '-' 부호가 들어가고 숫자 7개가 연이어 나와 있는 부분을 가져오면 된다.
전화번호가 포함된 긴 문자열을 입력 받았을 때, 전화번호만 뽑아내고 싶다면?
010 으로 시작해서 숫자 4개씩 '-' 부호를 사이에 끼고 있는 부분을 가져오면 된다.
그런 것들을 정규표현식을 사용하여 해결할 수 있다.
re 라이브러리를 import 해주어야 하고, re.findall('정규표현식', '문장') 을 많이 사용한다.
import re
정규표현식과 메타문자를 이용하여 문자열에서 원하는 정보를 찾거나 문자열을 정리할 수 있다.
문자 | 뜻 |
e* | e가 0회 이상 있음 |
e+ | e가 1회 이상 있음 |
e? | e가 0또는 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']
반응형
'self.python' 카테고리의 다른 글
[python] DataFrame의 결측치를 시각화 해서 확인하기 - missingno 사용 (0) | 2022.05.13 |
---|---|
[python] DataFrame 의 결측값, 중복값 확인하고 제거하기 (0) | 2022.05.12 |
[python] seaborn 기본 제공 데이터셋 불러오기, heatmap 그리기 (0) | 2022.05.11 |
[Numpy] Numpy 기초 - 기본적인 배열 다루기 (0) | 2022.05.10 |
[파이썬] 제일 큰 자리수 구하기 - 문자열 인덱싱 (0) | 2022.05.09 |
댓글