Remarks
본 글은 점프 투 파이썬 - 07장 정규표현식 등을 참고하여 작성되었습니다.
1. 정규 표현식의 기초, 메타 문자
1.1 []: character class
- [] 안에서는 ^만 meta character로 인식된다
1
2
3
4
5
6
7
8
9
10
11
[abc]: a, b, c 중 한 개의 문자라도 포함한다면 일치
[a-zA-Z]: 알파벳을 포함하면 일치
[0-9]: 숫자를 포함하면 일치
[^0-9]: 숫자가 아닌 문자만 포함하면 일치
[\d]: [0-9]와 동일
[\D]: [^0-9]와 동일
[\s]: [ \t\n\r\f\v]와 동일 (whitespace 문자)
[\S]: [^ \t\n\r\f\v]와 동일
[\w]: [a-zA-Z0-9_]와 동일 (문자 + 숫자, alphanumeric)
[\W]: [^a-zA-Z0-9_]와 동일
1.2 .: Dot (wildcard)
1
2
a.b: "a + 모든 문자 + b" (acb, a0b, a_b, a b)
a[.]b: "a + .을 포함하는 문자 + b"
1.3 *: Repeat (0번 이상)
1
ca*t: * 앞의 문자 a가 0번 이상 반복되면 일치 (ct, cat, caat)
1.4 +: Repeat (1번 이상)
1
ca+t: + 앞의 문자 a가 1번 이상 반복되면 일치 (cat, caat)
1.5 {m,n}: Repeat (m번 이상 n번 이하)
1
2
3
4
5
6
ca{2}t: {2} 앞의 문자 a가 2번 반복되면 일치 (caat)
ca{2,3}t: {2} 앞의 문자 a가 2번 이상 3번 이하 반복되면 일치 (caat, caaat)
ca{2,}t: {2,} 앞의 문자 a가 2번 이상 반복되면 일치 (caat, caaat, caaaat, ...)
ab?c: ? 앞의 문자 b가 0번 이상 1번 이하 반복되면 일치 (ac, abc)
- ab{0,1}c 와 동일
1.6 ^: Starting position
1
^abc: abc로 시작하면 일치 (abc, abcd)
1.7 $: Ending position
1
abc$: abc로 끝나면 일치 (abc, dabc)
2. 정규 표현식 컴파일 및 실행
2.1 re.compile()
1
2
import re
p = re.compile('[a-z]+')
2.2 match()
1
2
3
4
5
6
7
p.match(s): s가 정규식에 매치되지 않으면 None을 반환
m = p.match('python')
if m:
print("Match found:", m.group()) # m.group(): 'python'
else:
print("No match")
2.3 search()
1
2
3
4
5
6
7
p.search(s): s의 substring들이 정규식에 매치되지 않으면 None을 반환
m = p.search('3 python')
if m:
print("Match found:", m.group()) # m.group(): 'python'
else:
print("No match")
2.4 findall()
1
2
3
p.findall(s): 매치되는 모든 substring들을 list로 반환
rst = p.findall("life is too short") # ['life', 'is', 'too', 'short']
2.5 finditer()
1
2
3
4
p.finditer(s): 매치되는 모든 substring들을 iterator로 반환
for r in p.finditer(s):
print(r.group())
2.6 sub()
1
p.sub(r, s): string s안에서 매치되는 모든 substring를 r로 변환한 결과를 반환
2.7 컴파일 및 수행을 동시에 하기
1
2
3
4
p = re.compile('[a-z]+')
m = p.match('python')
m = re.match('[a-z]+', 'python')
2.8 match
객체의 method
1
2
3
4
5
6
m = p.match('python')
m.group(): 매치된 문자열
m.start(): 매치된 문자열의 시작 위치
m.end(): 매치된 문자열의 끝 위치
m.span(): 매치된 문자열의 (시작,끝)에 해당하는 tuple
PREVIOUSEtc