일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 머신러닝
- Common Child
- Recursion: Davis' Staircase
- 구슬탈출2
- Interview Preparation Kit
- 피보나치 함수
- Roads and Libraries
- 격파르타 후기
- Reverse Shuffle Merge
- Max Array Sum
- DFS: Connected Cell in a Grid
- [sqld]자격증합격
- 백준
- Find the nearest clone
- 알고리즘
- 파이썬
- programmers
- hackerrank
- candies
- 야근지수
- Special String Again
- Algorithm
- 매칭점수
- 코딩테스트
- 격파르타 합격후기
- python
- BFS: Shortest Reach in a Graph
- 격파르타 장점
- 해커랭크
- 프로그래머스
- Today
- Total
Archive
[파이썬 기초] 정규표현 본문
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 |