티스토리 뷰
반응형
문자 클래스 [ ]
- [] 사이의 문자와 매칭한다.
- [abc]
의 경우 매칭되는 문자가 a,b,c중 하나라도 가지고 있으면 매칭된다.
- [a-c]
처럼 할 경우 구간으로 인식하여 from 'a' to 'c'구간을 체크한다.
Dot(.)
- 줄바꿈(\n)을 제외한 모든 문자와 매칭
- a.b
와 매칭되는 문자열은 aab, a0b처럼 a와 b 사이에 어떠한 종류의 문자가 와도 매칭이 된다. 하지만 abc처럼 a와 b사이에 아무 글자도 존재하지 않으면 매칭이 되지 않는다.
반복(*)
- ca*t
의 경우 a가 1번 이상 반복될 경우 매칭이 된다. 예를 들어, cat, caat, caaat 같은 문자열의 경우 매칭된다.
- ct는 a가 0번 반복되어 마찬가지로 매칭된다.
반복(+)
- 반복 * 와 차이가 거의 없지만 반복 + 의 경우 ca+t
는 ct처럼 a가 0번 반복될 경우 매칭되지 않는다.
- [a-z]+
: a부터 z까지 문자열이 0이 아닌 횟수 반복된다.
반복({m,n},?)
- ca{2}t 의 경우는 a가 반드시 2번만 나와야한다.
- ca{2,5}t의 경우는 a가 2이상 5이하 번 나와야한다.
- ca?t의 경우 a가 0번 이거나 1번 일때에 매칭된다. ?는 {0,1}과 같은 표현이다.
정규표현식 사용법
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import re
# 패턴 객체가 생성
p = re.compile("a.c")
# match는 첫번째 글자부터 같아야한다.
m = p.match("abc")
# search는 문자열 내에만 존재하면 된다.
m2 = p.search("2 abc")
# findall은 일치하는 것을 찾아서 리스트에 담아서 반환해준다.
# 유일하게 결과물이 re.Match가 아니라 리스트로 나온다. ["Life", "is", "short", "art", "is", "long"]
m3 = p.findall("Life is short art is long")
# finditer의 경우 위의 findall처럼 문자열을 잘라서 반환하지만 iter를 활용하면 각각을 re.Match 객체로 반환할 수 있다.
m4 = p.findinter("Life is short art is long")
for i in m4:
print(i)
# 검색 후 매칭이 되는 경우 re.Match 객체로 반환
# match가 안될 경우 None으로 반환
print(m)
|
cs |
match 객체의 메서드
- group()
: 매치된 문자열을 리턴한다.
- start()
: 매치된 문자열의 시작 위치를 리턴한다.
- end()
: 매치된 문자열의 끝 위치를 리턴한다.
- span()
: 매치된 문자열의 시작과 끝 위치의 튜플 (시작, 끝)을 리턴한다.
컴파일 옵션
1
2
3
4
5
6
7
|
import re
# dot과 다르게 \n도 검색한다.
p = re.compile("a.c", re.DOTALL)
# 대소문자를 무시한다.
p = re.compile("a.c", re.I)
print(m)
|
cs |
반응형
'알고리즘 학습 > 알고리즘 개념' 카테고리의 다른 글
Swift - 에라토스테네스의 체(sieve of Eratosthenes) for 소수 판별 (0) | 2021.08.14 |
---|---|
연결 리스트(Linked List) (0) | 2020.09.15 |
최적 부분 구조(Optimal Substructure) (0) | 2020.09.04 |
Quick Sort (퀵소트) (0) | 2020.08.19 |
Binary Search (이진 탐색) (0) | 2020.08.19 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- API#lazy#
- 순열사이클#BOJ#Python
- django
- 미로 탐색#백준알고리즘#Python
- filter#isalnum#lower
- 랜선자르기#이분탐색#BOJ#Python
- 터틀비치#리콘#xbox#controller
- 날짜 계산#BOJ#완전탐색#Python
- 병든 나이트#BOJ#탐욕법#Python
- 반복수열#백준알고리즘#Python
- 텀 프로젝트#백준알고리즘#Python
- Distinct#Codility#Python
- 리모컨#완전탐색#BOJ#Python
- 배열합치기#분할정복#BOJ#Python
- django#slicing
- 백준 알고리즘#BackTracking
- 토마토#백준알고리즘#Python
- 암호코드#dp#BOJ#Python
- 공유기 설치#BOJ#이분탐색#Python
- Swift#Tuples#Range
- Triangle#Sorting#Codility#Python
- 종이자르기#분할정복#BOJ#Python
- 쿼드트리#BOJ#분할정복#Python
- NumberofDiscIntersections#Codility#Sort#Python
- PassingCars#Codility#Python
- 섬의개수#백준알고리즘#Python
- 파이썬알고리즘인터뷰#4장
- N으로 표현#DP#Programmers#Python
- 나무자르기#BOJ#이분탐색#Python
- Brackets#Stacks and Queues#Codility#Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함