방명록
- [Python] 정규 표현식 (Regular Expression)2025년 04월 25일 09시 48분 41초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
정규 표현식 (Regular Expression)
Python에서 이 정도는 기본적으로 알아야하는 정규 표현식이라고 생각해 정리해 보았다.
1. 기본 메타 문자 (Meta Characters)
.: 임의의 한 문자 (개행 문자 제외)^: 문자열의 시작$: 문자열의 끝*: 앞의 문자가 0번 이상 반복+: 앞의 문자가 1번 이상 반복?: 앞의 문자가 0번 또는 1번 나타남[]: 문자 집합. [abc]는 a, b, c 중 하나를 의미[^]: 부정 문자 집합. [^abc]는 a, b, c를 제외한 나머지 문자 중 하나를 의미|: OR 연산. a|b는 a 또는 b를 의미(): 그룹. 매칭된 부분을 캡처하여 나중에 사용 가능\: 이스케이프 문자. 메타 문자를 리터럴 문자로 사용하기 위해 (예: \.은 점 문자를 의미)
2. 특수 시퀀스 (Special Sequences)
\d: 숫자 (digit).[0-9]와 동일\D: 숫자가 아닌 문자.[^0-9]와 동일\w: 단어 문자 (word character).[a-zA-Z0-9_]와 동일\W: 단어 문자가 아닌 문자.[^a-zA-Z0-9_]와 동일\s: 공백 문자 (space character).[ \t\n\r\f\v]와 동일\S: 공백 문자가 아닌 문자.[^ \t\n\r\f\v]와 동일
3. 수량자 (Quantifiers)
{n}: 앞의 문자가 정확히 n번 반복{n,}: 앞의 문자가 n번 이상 반복{n,m}: 앞의 문자가 n번 이상 m번 이하 반복
4. 정규 표현식 플래그 (Flags)
re.IGNORECASE또는re.I: 대소문자를 구별하지 않음re.MULTILINE또는re.M: 여러 줄 문자열에서^과$이 각 줄의 시작과 끝에 매칭됨re.DOTALL또는re.S:.이 개행 문자(\n)와도 매칭됨
5. re 모듈 함수
re.search(pattern, string): 문자열에서 패턴과 일치하는 첫 번째 부분을 찾음.Match객체 반환re.match(pattern, string): 문자열의 시작부터 패턴과 일치하는지 확인.Match객체 반환re.findall(pattern, string): 문자열에서 패턴과 일치하는 모든 부분을 리스트로 반환re.finditer(pattern, string): 문자열에서 패턴과 일치하는 모든 부분을 이터레이터로 반환re.sub(pattern, replacement, string): 문자열에서 패턴과 일치하는 부분을 replacement로 대체
6. 예제 코드로 보는 정규 표현식 상세 분석
\d+match = re.search(r'\d+', "123")\d+: 숫자가 1번 이상 반복됨- 전체적으로, 이 정규 표현식은 문자열에서 1개 이상의 연속된 숫자를 찾는다.
prob_text에서 첫 번째로 나타나는 정수를 추출하는 데 사용된다.
-?\d+match = re.search(r'-?\d+', "-123")-?:-문자가 0번 또는 1번 나타남 (음수 부호 선택적)\d+: 숫자가 1번 이상 반복됨- 전체적으로, 이 정규 표현식은 문자열에서 음수 부호가 있을 수도 있는 정수 형태의 숫자를 찾는다. temp_text_combined에서 첫 번째로 나타나는 정수를 추출하는 데 사용된다.
\d+\.?\d*match = re.search(r'\d+\.?\d*', "1.23")\d+: 숫자가 1번 이상 반복됨\.?: . 문자가 0번 또는 1번 나타남 (소수점 선택적)\d*: 숫자가 0번 이상 반복됨- 전체적으로, 이 정규 표현식은 소수점을 포함할 수도 있는 숫자를 찾는다.
pcp_text에서 첫 번째로 나타나는 소수 또는 정수를 추출하는 데 사용된다.
7. 그룹 캡처
()를 사용하여 정규 표현식의 일부를 그룹으로 묶을 수 있다.match.group(0)은 전체 매칭된 문자열을 반환한다.match.group(1)은 첫 번째 그룹에 매칭된 문자열을 반환한다.match.group(2)는 두 번째 그룹에 매칭된 문자열을 반환한다.- ...
import re match = re.search(r"(\d+)[.](d*)", "123.45") print(match.group()) # 전체 일치: '123.45' print(match.group(0)) # 전체 일치: '123.45' print(match.group(1)) # 첫 번째 그룹 (d+): '123' print(match.group(2)) # 두 번째 그룹 (d*): '45'8. 추가 학습 자료
- Python re 모듈 공식 문서: https://docs.python.org/3/library/re.html
- 정규 표현식 시각화 도구: https://regex101.com/
728x90반응형'언어·프레임워크 > Python' 카테고리의 다른 글
[Python] time 모듈: time.time(), time.perf_counter(), time.process_time() 설명 (0) 2025.05.12 [Python] 일급 함수: 런타임 초기화부터 partial 활용까지 (0) 2025.05.08 [Python] 파이썬, 한글 파일명 자모 분리? 걱정 노노! (0) 2025.04.17 [Python] Python 패키지 관리의 혁신, uv 사용 가이드 (V3 이슈 포함) (0) 2025.04.14 [Python] py 파일을 exe 파일로 빌드, auto-py-to-exe가 답! (0) 2023.12.18 다음글이 없습니다.이전글이 없습니다.댓글