정규식 간단요약
^ 라인의 처음을 매칭
$ 라인의 끝을 매칭
. 임의의 문자를 매칭 (와일드 카드)
\s 공백 문자를 매칭
\S 공백이 아닌 문자를 매칭
* 바로 앞선 문자에 적용되고 0 혹은 그 이상의 앞선 문자와 매칭을 표기함.
*? 바로 앞선 문자에 적용되고 0 혹은 그 이상의 앞선 문자와 매칭을 탐욕적이지 않은 방식으로 표기함.
+ 바로 앞선 문자에 적용되고 1 혹은 그 이상의 앞선 문자와 매칭을 표기함
+? 바로 앞선 문자에 적용되고 1 혹은 그 이상의 앞선 문자와 매칭을 탐욕적이지 않은 방식으로 표기함.
[aeiou] 명세된 집합 문자에 존재하는 단일 문자와 매칭. “a”, “e”, “i”, “o”, “u” 문자만 매칭되는 예제
[a-z0-9] - 기호로 문자 범위를 명세할 수 있다. 소문자이거나 숫자인 단일 문자만 매칭되는 예제.
( ) 괄호가 정규표현식에 추가될 때, 매칭을 무시한다. 하지만 findall()을 사용 할 때 전체 문자열보다 매칭된 문자열의 상세한 부속 문자열을 추출할 수 있게 한다.
특수 문자를 활용한 문자 패턴 찾기
정규 표현식에서는 특수 문자를 사용할 수 있습니다. 그리고 방금 보셨던 '^'(캐럿 문자) 외에도 다음과 같은 다양한 특수 문자들이 있습니다.
^ : 문장의 시작을 의미
. : 어떤 문자 한 글자
* : 앞의 문자가 여러 번 반복될 수 있음을 의미
+ : 앞의 문자가 1번 이상 나타남을 의미
\S : 공백 문자가 아닌 한 개의 문자
(\는 역슬래시와 같은 문자임)
따라서, 다음과 같은 문자열들은 모두 '^X.*:'라는 패턴을 통해 찾을 수 있습니다.
- X-Sieve: CMU Sieve 2.3
- X-DSPAM-Result: Innocent
- X-DSPAM-Confidence: 0.8475
- X-Content-Type-Message-Body: text/plain
그리고 다음과 같은 문자열들은 '^X-\S+:' 패턴으로 찾을 수 있으며,
- X-Sieve: CMU Sieve 2.3
- X-DSPAM-Result: Innocent
다음의 문자열은 'X-'와 ':' 사이에 공백 문자가 아닌 문자가 포함되지 않았기 때문에 '^X-\S+:' 패턴으로 찾을 수 없습니다.
- X-: Very short
- X-Plane is behind schedule: two weeks
import re
x = 'From: Using the : character'
y = re.findall('^F.+?:', x)
print(y)
# ['From:']
x = 'From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008'
y = re.findall('^From (\S+@\S+)',x)
print(y)
# ['stephen.marquard@uct.ac.za']
코드는 다음과 같은 식으로 작성합니다.
'개발 > Python' 카테고리의 다른 글
파이썬 =, == 차이 (0) | 2020.12.20 |
---|---|
py4e 코세라 구독 없이 예제 문제 보는 법 (0) | 2020.12.11 |
파이참에서 32bit, 64bit 가상환경 설정 후 손쉽게 interpreter 바꾸기 (0) | 2020.12.04 |
py4e 9.4 who has sent the greatest number of mail messages? (0) | 2020.11.29 |
파이썬 무료 강의 추천 : 모두를 위한 파이썬 Python for everybody (0) | 2020.11.28 |