728x90
정규식 패턴
패턴 | 설명 | 예제 |
^ | 이 패턴으로 시작해야 함 | ^abc : abc로 시작해야 함 (abcd, abc12 등) |
$ | 이 패턴으로 종료되어야 함 | xyz$ : xyz로 종료되어야 함 (123xyz, strxyz 등) |
[문자들] | 문자들 중에 하나이어야 함. 가능한 문자들의 집합을 정의함. | [Pp]ython : "Python" 혹은 "python" |
[^문자들] | [문자들]의 반대로 피해야할 문자들의 집합을 정의함. | [^aeiou] : 소문자 모음이 아닌 문자들 |
| | 두 패턴 중 하나이어야 함 (OR 기능) | a | b : a 또는 b 이어야 함 |
? | 앞 패턴이 없거나 하나이어야 함 (Optional 패턴을 정의할 때 사용) | \d? : 숫자가 하나 있거나 없어야 함 |
+ | 앞 패턴이 하나 이상이어야 함 | \d+ : 숫자가 하나 이상이어야 함 |
* | 앞 패턴이 0개 이상이어야 함 | \d* : 숫자가 없거나 하나 이상이어야 함 |
패턴{n} | 앞 패턴이 n번 반복해서 나타나는 경우 | \d{3} : 숫자가 3개 있어야 함 |
패턴{n, m} | 앞 패턴이 최소 n번, 최대 m 번 반복해서 나타나는 경우 (n 또는 m 은 생략 가능) | \d{3,5} : 숫자가 3개, 4개 혹은 5개 있어야 함 |
\d | 숫자 0 ~ 9 | \d\d\d : 0 ~ 9 범위의 숫자가 3개를 의미 (123, 000 등) |
\w | 문자를 의미 | \w\w\w : 문자가 3개를 의미 (xyz, ABC 등) |
\s | 화이트 스페이스를 의미하는데, [\t\n\r\f] 와 동일 | \s\s : 화이트 스페이스 문자 2개 의미 (\r\n, \t\t 등) |
. | 뉴라인(\n) 을 제외한 모든 문자를 의미 | .{3} : 문자 3개 (F15, 0x0 등) |
출처: http://pythonstudy.xyz/python/article/401-%EC%A0%95%EA%B7%9C-%ED%91%9C%ED%98%84%EC%8B%9D-Regex
메타 문자
\ ^ $ . | [ ] * + ? { }: 앞에 역슬래시 \를 붙여 이스케이프 해주면 된다.
이스케이프 문자
(대문자를 쓰면 해당 문자 집합을 제외하는 ^ 문자와 동일하다. / 백 스페이스는 반드시 [\b]를 입력해야 한다.)
- \b: 문자와 공백 사이를 의미한다.
- \c: 제어 문자를 의미한다.
- \d: 숫자에 해당하는 유니코드에 대응. [0-9]와 달리 아랍 문자, 페르시아 문자 등 다양한 숫자를 포괄한다.
- \f: 폼 피드
- \n: 개행 문자
- \s: 공백 문자
- \t: 탭 문자
- \v: 수직 탭
- \w: 단어 영문자+숫자+_(밑줄) [0-9a-zA-Z_]
- \x: 16진수 값
- \0: 8진수 값
re모듈
파이썬은 정규 표현식을 지원하기 위해 re(regular expression) 모듈을 제공한다.
>>> import re
>>> p = re.compile('ab*')
re.compile을 사용하여 정규 표현식(위 예에서는 ab*)을 컴파일한다. re.compile의 리턴값을 객체 p(컴파일된 패턴 객체)에 할당해 그 이후의 작업을 수행할 것이다.
- 정규식을 컴파일할 때 특정 옵션을 주는 것도 가능한데, 이에 대해서는 뒤에서 자세히 살펴본다.
- 패턴이란 정규식을 컴파일한 결과이다.
컴파일된 패턴 객체가 제공하는 4가지 메서드
Method | 목적 |
match | 문자열의 처음부터 정규식과 매치되는지 조사한다. |
search | 문자열 전체를 검색하여 정규식과 매치되는지 조사한다. |
findall | 정규식과 매치되는 모든 문자열(substring)을 리스트로 리턴한다. |
finditer | 정규식과 매치되는 모든 문자열(substring)을 반복 가능한 객체로 리턴한다. |
match 객체의 메서드
method | 목적 |
group | 매치된 문자열을 리턴한다. |
start | 매치된 문자열의 시작 위치를 리턴한다. |
end | 매치된 문자열의 끝 위치를 리턴한다. |
span | 매치된 문자열의 (시작, 끝)에 해당하는 튜플을 리턴한다. |
+ re.sub("패턴", "변경할 문자", "원본")
'IT > Python' 카테고리의 다른 글
[백준] 26265번 멘토와 멘티 [Python] - 정렬 0 | 2023.09.06 |
---|---|
[프로그래머스] Lv.1 로또의 최고 순위와 최저 순위 [Python] 0 | 2023.09.06 |
[프로그래머스] Lv.1 올알이[2] [Python] 0 | 2023.09.06 |
[백준] 20114번 미아 노트 [Python] 0 | 2023.09.05 |