📁정규표현식
- 정규표현식(RE)은 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어
- 복잡한 문자열의 검색과 치환을 위해 사용됨
re 모듈 사용
import re
정규식 검사 함수
1. compile 정규표현식 컴파일
re.compile() 명령을 통해 정규표현식을 컴파일하여 변수에 저장한 후 사용 가능
변수명 = re.compile('정규표현식')
- 컴파일 옵션
- DOTALL(S) : `.`(dot)이 줄바꿈 문자를 포함해 모든 문자와 매치될 수 있게 함
- IGNORECASE(I) : 대소문자에 관계없이 매치될 수 있게 함
- MULTILINE(M) : 여러 줄과 매치될 수 있게 함 `^`, `$` 메타 문자 사용과 관계 있는 옵션
- VERBOSE(X) : verbose 모드를 사용할 수 있게 한다. 정규식을 보기 편하게 만들 수 있고 주석 등을 사용할 수 있게 됨
2. 패턴 객체의 메서드
함수 명 | 기능 |
re.match(pattern, string) | 문자열의 처음부터 일치하는 패턴 찾기 |
re.search(pattern, string) | 문자열 안에 패턴이 일치하는지 확인 (처음부터 일치하지 않아도 됨) |
re.findall(pattern, string) | 문자열 안에 패턴이 맞는 케이스 전부를 리스트로 반환 |
re.sub(pattern, repl, string) | 문자열에서 패턴과 일치하는 부분을 다른 문자열로 대체 |
re.split(pattern, string, maxsplit = 0) | 패턴을 기준으로 문자열을 분리하여 리스트로 반환 |
re.fullmatch(pattern, string) | 문자열 전체가 패턴과 정확히 일치하는지 확인 |
메타문자 (Meta characters)
문자가 원래 가진 원래의 의미가 아닌 특별한 용도로 사용되는 문자
. ^ $ * + ? \ | ( ) { } [ ] |
2.1. [ ] 문자 - 문자클래스 : '[', ']' 사이의 문자들의 매치
- 정규 표현식이 `[abc]`라면 이 표현식의 의미는 'a, b, c' 중 한 개의 문자와 매치'
- 사이에 - 하이픈을 사용하면 두 문자 사이의 범위를 나타냄
- [a-zA-Z] : 모든 알파벳
- [0-9] : 모든 숫자
🚨 ^ 메타 문자 를 사용하는 경우에는 반대(not)라는 의미를 가짐
➕ 자주 사용하는 문자 클래스
`[0-9]` 또는 `[a-zA-Z]` 등은 무척 자주 사용하는 정규 표현식이다.
이렇게 자주 사용하는 정규식은 별도의 표기법으로 표현할 수 있다.
❑ `\d` - 숫자와 매치된다. `[0-9]`와 동일한 표현식이다.
❑ `\D` - 숫자가 아닌 것과 매치된다. `[^0-9]`와 동일한 표현식이다.
❑ `\s` - 화이트스페이스(whitespace) 문자와 매치된다. `[ \t\n\r\f\v]`와 동일한 표현식이다. 맨 앞의 빈칸은 공백 문자(space)를 의미한다.
❑ `\S` - 화이트스페이스 문자가 아닌 것과 매치된다. `[^ \t\n\r\f\v]`와 동일한 표현식이다.
❑ `\w` - 문자+숫자(alphanumeric)와 매치된다. `[a-zA-Z0-9_]`와 동일한 표현식이다.
❑ `\W` - 문자+숫자(alphanumeric)가 아닌 문자와 매치된다. `[^a-zA-Z0-9_]`와 동일한 표현식이다.
대문자로 사용된 것은 소문자의 반대임을 추측할 수 있다.
2.2. .(dot) 문자 -`\n`을 제외한 모든 문자
정규 표현식의 .(dot) 메타 문자는 줄바꿈 문자인 `\n`을 제외한 모든 문자와 매치된다는 것을 의미
2.3. `*` 문자 - 반복을 의미하는 문자
정규식 | 문자열 | 매치 여부 | 설명 |
`ca*t` | ct | YES | "a"가 0번 반복되어 매치 |
`ca*t` | cat | YES | "a"가 0번 이상 반복되어 매치 (1번 반복) |
`ca*t` | caaat | YES | "a"가 0번 이상 반복되어 매치 (3번 반복) |
2.4 `+` 문자 - 최소 1번 이상 반복될 때 사용하는 문자
정규식 | 문자열 | 매치 여부 | 설명 |
`ca+t` | ct | NO | "a"가 0번 반복되어 매치되지 않음 |
`ca+t` | cat | YES | "a"가 0번 이상 반복되어 매치 (1번 반복) |
`ca+t` | caaat | YES | "a"가 0번 이상 반복되어 매치 (3번 반복) |
반응형
'Algorithm > Algorithm Theory' 카테고리의 다른 글
[Algorithm] 다이나믹 프로그래밍 (1) | 2024.04.23 |
---|---|
[Algorithm] 02. 배열3 (0) | 2023.02.12 |
[Algorithm] 01. 배열2 (0) | 2023.02.12 |
[Algorithm] 00.배열 1 (0) | 2023.02.08 |
[Python] 07.객체 지향 프로그래밍2 + 에러와 예외 (0) | 2023.02.05 |