정규표현식의 기초, 메타문자
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
'Programming > Python * Django' 카테고리의 다른 글
[Django] runserver 수행시 broken pipe 이슈 해결 (0) | 2021.07.05 |
---|---|
[Django] ORM 구조와 원리 그리고 최적화 전략 - Pycon2020 김성렬님 발표 정리 (0) | 2021.06.06 |
[Python] 파이썬 SQLite 연동하기 (0) | 2019.05.21 |
[Python] Selenium을 활용한 웹 크롤링 (0) | 2019.05.21 |