00 개요
1. 정의
1) 정규표현식 (Regular Expression)이란
- 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용는 형식/언어
- 문자열을 처리하는 방법 중 하나로, 복잡한 조건문이 아닌 한줄로 간단히 표현
- 가독성은 떨어지기 때문에 표현식 숙지 필수
- 정규표현식의 주 용도:
- text에서 원하는 특정 pattern을 찾을 경우 (전화번호/ 홈페이지 등)
- pattern을 다른 문자열로 변환할 경우
- 사용자가 입력한 데이터가 특정 pattern에 유효한지 유효성 검사할 경 (이메일 / 비밀번호)
- 등등
2) 정규표현식의 '패턴(Pattern)'
- 정규표현식은 패턴을 사용해서 문자열을 처리함
- 기본 원리:
- 대상 문자열에 정규표현식을 적용해서 찾을 문자열을 검색함
- 조건에 맞는 문자열을 찾은 이후 추출 또는 치환 가능
01 정규표현식 패턴 종류
- 각 패턴을 개별적으로 또는 함께 혼합해서 사용
1. 매칭
패턴 | 기능 | 예시 | 설명 |
. | - 문자 하나 - 모든 문자열 종류 (숫자, 한글, 영어, 특수기호, 공백 등) - newline 제외 (DOTALL flag 표시하면 newline도 포함) |
“...” | 문자열의 길이가 세 글자 이상인 것을 찾음 |
a-z A-Z A-z |
영어알파벳(-으로 범위 지정) | ||
ㄱ-ㅎ 가-힣 |
한글 문자(-으로 범위 지정) | ||
0-9 | 숫자(-으로 범위 지정) | ||
\d | 숫자 | ||
\D | 숫자가 아닌 것 | ||
\w | 영어 알파벳, 숫자, 언더스코어(_) | ||
\W | /w 가 아닌 것 | ||
\s | space 공백 | ||
\S | space 공백이 아닌 것 | ||
\특수기호 | 특수기호 |
2. 검색
패턴 | 기능 | 예시 | 설명 |
| | OR(또는), | 로 구분된 문자에 해당하는 문자열 찾음 | “데이터|데이타” | ‘데이터’ 또는 ‘데이타’에 해당하는 문자열을 찾음 |
[문자] | [ ] 안에 나열된 패턴에 해당하는 문자열을 찾음 | “[123]d” | 대상 문자열에서 ‘1d’ 또는 ‘2d’ 또는 ‘3d’인 문자열을 찾음 |
[^문자 ] | 괄호 안의 문자를 미포함하는 문자열 찾음 | “[^안녕]” | ‘안’ 또는 ‘녕’을 포함하지 않는 문자열 찾음. ‘안녕’, ‘안해’, ‘정녕’ 모두 제외됨 |
^문자열 | 시작하는 문자열을 찾음 | “^안녕” | 대상 문자열에서 ‘안녕’으로 시작하는 문자열을 찾음 |
문자열$ | 끝나는 문자열을 찾음 | “잘가$” | 대상 문자열에서 ‘잘가’로 끝나는 문자열을 찾음 |
() | 그룹 검색 및 분류(match메서드에서 그룹별로 묶어줌) | ||
(?: 패턴) | 그룹 검색(분류X) | ||
\b | 단어의 처음/끝 | ||
\B | 단어의 처음/끝이 아님 |
3. 수의 제한
패턴 | 기능 | 예시 | 설명 |
? | 0~1회 나타나는 문자 | “[가나다]?” | ‘가’ 또는 ‘나’ 또는 ‘다’가 0~1회 등장하는 문자열을 찾음. ‘가지’, ‘나라’, ‘코코’ 해당 |
* | 0회 이상 나타나는 문자 | “a*” | ‘a’가 0번 이상 등장하는 문자열을 찾음. ‘b’, ‘a’, ‘aa’ 해당 |
+ | 1회 이상 나타나는 문자 | “국+” | ‘국’이 1번 이상 등장하는 문자열을 찾음. ‘한국’, ‘미역국’ 해당 |
{n} |
n회 나타나는 문자 | “치{3}” | ‘치’가 3회 등장하는 문자열을 찾음. ‘치치치’, ‘치카치카치카’ 해당 |
{n, } | 최소 n회 이상 나타나는 문자 | “치{1, }” | ‘치’가 1회 등장하는 문자열을 찾음. ‘치’, ‘치카치카’, ‘치치치’ 해당 |
{m, n} | m회 이상 n회 이하 나타나는 문자 | “치{1,2}” | ‘치’가 1회 이상 2회 이하 등장하는 문자열을 찾음. ‘치커’, ‘치카치카’ 해당 |
4. 문자 그룹
패턴 | 기능 | 예시 | 설명 |
[A-z] 또는 [:alpha:] 또는 \a |
알파벳 대/소문자인 문자열 찾음 | “[A-z]+” | 대상 문자열에서 알파벳이 1개 이상인 문자열을 찾음 |
[ㄱ-ㅎ|ㅏ-ㅣ|가-힣] | 한글인 문자열 찾음 | “[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]+” | 대상 문자열에서 한글이 1개 이상인 문자열을 찾음 |
[0-9] 또는 [:digit:] 또는 \d |
숫자인 문자열 찾음 | “^[0-9]+" “^[0-9]+$" |
1개 이상의 숫자로 시작하는 문자열 찾음 1개 이상의 숫자로 시작하고 끝나는 문자열 찾음 |
참조
'Python > 기본문법' 카테고리의 다른 글
re (정규표현식 작업 모듈) (0) | 2024.06.13 |
---|---|
파이썬 Type Hint (타입 정보 명시적 표시) (0) | 2024.05.08 |
Generator (제너레이터) (0) | 2024.05.03 |
dict.pop() 메소드 (0) | 2024.04.17 |
os.path vs pathlib.Path (파일 경로 다루기) (0) | 2024.03.27 |