본문 바로가기
Programming/Python * Django

[Python] 정규표현식(Regular Expression) 기본 문법, 파이썬 re 모듈 활용

by 고막고막 2019. 5. 24.

정규표현식의 기초, 메타문자

1. 문자 클래스 [ ]

[a-c] = [abc]
[0-5] = [012345]
[a-zA-z] = 알파벳 모든 문자
[0-9] = 모든 숫자
\d = [0-9], decimal
\D = [^0-9] 숫자가 아님(^ not의 의미)
\s = whitespace 문자 (\t\n,space)
\S = whitespace 문자가 아님
\w = 문자+숫자 [a-zA-Z0-9], word
\W = 문자+숫자가 아닌 것[^a-zA-Z0-9]

2. Dot(.) 문자 : \n을 제외한 모든 문자

a.b : a b문자 사이에 \n를 제외한 모든 문자면 가능
acb : Yes
a#b : Yes
a1b : Yes
abc : No
a[.]b == a.b \

3. 반복(*)

ca*t : a 0개이상 반복
   -ct : Yes
   -cat : Yes
   -caaat : Yes

4. 반복(+)

ca{2}t : a 2번 반복
   -cat : No
   -caat : Yes
   -caaat : No
\d{6} : 0-9까지 숫자가 6번 반복
\d{6}[-]\d{7} : 주민등록번호 찾는 패턴
[0-9]{6}[-][0-9]{7} : 주민등록번호 찾는 패턴
ca{2,5}t : a 2~5번 반복
   -caat : Yes
   -caaaaat : Yes
ab?c : b 0~1번 사용되면 매칭
   -abc : Yes
   -ac : Yes

 

 

파이썬 정규식 모듈 re 매서드

1. 기본 사용법

import re
p = re.compile('[a-z]+')    # 정규표현식
m = p.match('python')       # 조사 할 문자열

2. match()

: 문자열의 처음부터 정규식과 매치되는지 확인, 단어 단위로 분리 후에 검색할 때 사용 → 찾으면 객체 리턴, 못찾으면 None 객체 리턴. match object()의 객체---span(), string(), group(), start(), start()---를 다른 매서드에서도 결과를 확인할 때 사용한다.

import re
p = re.compile('[a-z]+')
m = p.match('python')
print(m)
print(m.span())
print(m.string)
m = p.match('3 python')
print(m)

3. search()

: 문자열 전체를 검색하여 정규식과 매치되는지 확인 → 찾으면 객체 리턴, 못찾으면 None 객체 리턴

p = re.compile('[a-z]+')
s = p.search("python")
print(s)
print(s.span())
print(s.string)
print(s.group())
print('-' * 20)
s = p.search("3 python")
print(s)
print(s.span())
print(s.string)
print(s.group())

4. findall()

: 정규식과 매치되는 모든 문자열을 리스트로 반환, for문을 사용하면 1개씩 출력

import re
p = re.compile('[a-z]+')
result = p.findall('life is too short')
print(result)
p = re.compile('[a-zA-Z]+')
# p = re.compile('\w+')
result = p.findall('Life Is Too Short')
print(result)

5. finditer()

: 정규식과 매치되는 모든 문자열을 iterator로 반환, for문을 사용하면 1개씩 출력

import re
p = re.compile('[a-z]+')
result = p.finditer('life is too short')
print(result)
for r in result:
    print(r)

자세한 내용은 아래 사이트 참조
https://wikidocs.net/1669

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

http://urin79.com/blog/20666082

 

우린친구블로그 - 자주 쓰이는 정규식(Regular Expression)

자주 쓰이는 정규식(Regular Expression) 전자우편 주소: /^[a-z0-9_+.-]+@([a-z0-9-]+\.)+[a-z0-9]{2,4}$/ URL: /^(file|gopher|news|nntp|telnet|https?|ftps?|sftp):\/\/([a-z0-9-]+\.)+[a-z0-9]{2,4}.*$/ HTML 태그 - HTML tags: /\<(/?[^\>]+)\>/ 전화 번호 - 예, 123-123-2344 혹은 123-1234-12

urin79.com

작성한 정규식을 웹 상에서 바로 테스트 해볼 수 있는 사이트
https://www.regexpal.com/

 

Regex Tester - Javascript, PCRE, PHP

RegexPal requires a modern browser. Please update your browser to the latest version and try again.

www.regexpal.com