[Python] 정규표현식

Jonie Kwon·2022년 4월 13일
0
post-custom-banner

숫자

\d

숫자를 제외한 문자

\D

글자

\w
a, b, c, 가, 나, 다, 1, 2와 같은 문자와 숫자 포함 (언더바 _ 를 제외한 특수문자는 포함하지 않음)

글자를 제외한 문자

\W
\w와 반대. 즉, a, b, c, 가, 나, 다, 1, 2와 같은 문자와 숫자, 언더바 _ 를 제외한 모든 문자

공백 문자

\s (스페이스, 탭, 뉴라인)

공백 문자를 제외한 문자

\S

1개 이상의 패턴

+
\d+ : 하나 혹은 그 이상 연결된 숫자를 의미

0개 이상의 패턴

*
\d* : 숫자가 0개 이상

0 또는 1번의 패턴

?

-? : 하이픈-이 있거나 없을 경우
[- ]? : 하이픈 -이나 공백 이 있거나 없을 경우
\d+[- ]? : 하나 이상의 숫자\d와 연결된 하이픈-이나 공백 이 있거나 없을 경우

아무거나 하나

.

n번 반복

{n}

\d{2} : 숫자가 연속으로 2번

n~m번 반복

{n, m}

\d{3, 5} : 숫자가 연속으로 3번, 4번, 5번까지 반복

몇 개 중에 고르기

[] 내부에 포함할 문자 나열

[aeiou] : 소문자 모음만

범위 중에 고르기

[] 내부에 포함할 처음과 끝 글자 사이에 하이픈을 이어 작성

[1-9] : 1-9숫자만
[a-z] : 소문자 a to z
[가-힣] : 한글
[a-zA-Z가-힣] : 알파벳 대/소문자와 한글 모두

검색 순서

^ 문자열의 시작부터 검색
$ 문자열의 끝부터 검색

전화번호 추출하기

02-1234-5678, 042 123 4567, 01012345678 와 같은 형태를 갖는 전화번호만 추출하기

  1. 가장 앞 지역번호는 2자리 또는 3자리로 이루어져 있음 : \d{2,3}
  2. 지역번호 뒤 하이픈 -, 또는 공백 이 있거나 없고 바로 다음 숫자가 올 수 있음: \d{2,3}[- ]?\d
  3. 다음 숫자는 3자리 또는 4자리 : \d{2,3}[- ]?\d{3,4}
  4. 하이픈 또는 공백이 있거나 없고 4자리 숫자로 이루어짐 : \d{2,3}[- ]?\d{3,4}[- ]?\d{4}
regex = r'\d{2,3}[- ]?\d{3,4}[- ]?\d{4}'

search_target = '''이상한 전화번호 0030589-5-95826
Luke Skywarker 02-123-4567 luke@daum.net
다스베이더 070-9999-9999 darth_vader@gmail.com
princess leia 010 2454 3457 leia@gmail.com'''

import re
result=re.findall(regex,search_target)
print(result)

profile
메모하는 습관
post-custom-banner

0개의 댓글