Archive

[파이썬 기초] 정규표현 본문

공부/Python

[파이썬 기초] 정규표현

mariabeetle 2017. 10. 3. 00:03

1. 정규표현

- Regular Expressions : 패턴을 사용해 문자열을 표현하는 것을 뜻한다.

- 문자열 검색에 강하다.

- 파이썬에서 정규표현을 사용하려면 re모듈을 import해야한다.

import re

- 정규표현의 패턴을 기술할 때 일반 문자열이 아닌 r"..."과 같은 raw string기법을 사용하자. 정규표현식에서는 백슬래시(\)를 특수한 의미를 가지지만 일반 문자열을 다룰 때 사용되는 이스케이프 문자인 백슬래시(\)와 충돌하기 때문이다.

- raw string을 사용하면 파이썬 문자열에서 사용되는 백슬래시를 무효화할 수 있다.

pattern = r"...문자열..."

1
2
3
4
5
# 영어 문장에서 숫자값 검색하는 
import re
pat = r"\d+"
str = "This pen is 100won."
re.search(pat, str)
cs

2. 정규표현 명령

- re.match(pattern, str) : pattern이 str의 앞부분과 매칭되는지 조사해서  match 오브젝트를 반환한다. 발견되지 않으면 None을 반환한다.

- re.search(pattern, str) : str의 한 부분에 pattern과 매칭되는 것이 있는지 조사하고 오브젝트를 반환한다. 발견되지 않으면 None을 반환한다.

- re.split(pattern, str) : pattern으로 str을 분할해 그 결과로 얻어진 리스트를 반환한다.

- re.findall(pattern, str) : str에서 pattern과 매칭되는 것을 모두 찾아 문자열 리스트로 반환한다.

- re.finditer(pattern, str) : str에서 pattern과 매칭되는 것을 모두 찾아 이터레이터로 반환한다.

- re.sub(pattern, repl, str) : str에서 pattern과 매칭되는 것을 repl로 치환한다.

- re.compile(pattern) : pattern을 미리 컴파일한다.

- re.match()는 반드시 문자열의 맨 앞부터 pattern과 매칭되야 한다. 

- 매칭됬을 경우 match 오브젝트를 반환한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import re
words = [
    "orange""october""octpus""order""banana""baby""busy"
]
 
pattern = r"oc.*"
print("oc로 시작되는 패턴 =",pattern)
for word in words:
    if re.match(pattern, words):
        print("-", word)
# -october
# -octpus
 
pattern = r"b.*y"
print("b로 시작하고 y로 끝나는 패턴=", pattern)
for word in words:
    if re.match(pattern, word):
        print("-", word)
# -baby
# -busy
cs


3. match 오브젝트

- match.expand(template) : template 문자열을 매칭된 문자열로 치환한다.

- match.group([g]) : 매칭된 서브 그룹인 g를 반환한다.

- match.groups() : 패턴에 매칭된 모든 서브 그룹의 목록을 반환한다.

- match.groupdict() : 이름을 가진 서브 그룹을 딕셔너리형으로 반환한다.

- match.star([g]) : 그룹 g와 매칭된 부분 문자열에서 가장 앞에 있는 인덱스를 반환한다.

- match.end([g]) : 그룹 g와 매칭된 부분 문자열에서 가장 뒤에 있는 인덱스를 반환한다.

- match.span([g]) : 그룹 g에 관해 (start, end) 형태의 튜플을 반환한다.


4. 메타 캐릭터

- ^ : 문자열의 맨 앞을 나타낸다.

- $ : 문자열의 맨 뒤를 나타낸다.

 patten = r"\.png$"(확장자명이 png인것을 나타낸다.)

- .(피어리드) : 임의의 한 문자를 나타낸다.

^...$ : 세 문자로 구성된 문자열이 매칭된다.

- ? : 0회 또는 1회 반복

- + : 1회 이상 반복

* : 0회 이상 반복

- {m} : m회 반복

- {m, n} : m회 이상 n회 이하 반복

- {m, } : m회 이상 반복하는 것을 의미

a{3} : 'aaa'

a{3, 5}  : 'aaa', 'aaaa', 'aaaaa'

'공부 > Python' 카테고리의 다른 글

[파이썬 기초] 데코레이터  (0) 2017.10.03
[파이썬 기초] 리스트 내장 표기  (0) 2017.10.03
[파이썬 기초] 파일 처리  (0) 2017.10.02
[파이썬 기초] 모듈  (0) 2017.10.02
[파이썬 기초] iterator, generator  (0) 2017.10.02
Comments