re.escape() 함수로 특수 문자 이스케이프하기 파이썬에서 정규식 패턴을 작성하다 보면 별표(*), 물음표(?), 마침표(.), 괄호(() ) 같은 특수 문자들이 정규식 문법으로 잘못 해석될 수 있습니다. 이런 문자들을 리터럴 그대로 매칭하고 싶다면 각 문자 앞에 백슬래시(\)를 붙여 이스케이프해야 합니다. 파이썬의 re 모듈은 이 작업을 한 번에 처리해 주는 re.escape() 함수를 제공합니다. 이 함수는 문자열 내의 모든 특수 문자를 자동으로 찾아 백슬래시를 붙인 결과를 반환하므로, 임의의 문자열을 정규식 패턴으로 안전
re.split() 메서드란?Python의 re 모듈에서 제공하는 re.split(pattern, string, [maxsplit=0]) 메서드는 지정한 정규식 패턴이 나타나는 위치를 기준으로 문자열을 분할합니다. 일반 문자열의 split()과 달리 정규식 패턴 자체를 구분자로 사용할 수 있어 훨씬 유연한 문자열 처리가 가능하다는 것이 큰 장점입니다.기본 사용 예제import reresult = re.split(ra, Dynamics)print(result)출력 결과[Dyn, mics]위 예제에서는 문자열 Dynamics를 구분자
파이썬에서 하나의 문자열을 세미콜론, 쉼표, 콜론, 줄바꿈처럼 서로 다른 여러 구분 기호를 기준으로 나눠야 하는 경우가 종종 있습니다. 이럴 때 re 모듈의 re.split() 함수와 정규식을 활용하면 간단하게 해결할 수 있습니다.re.split() 기본 문법re.split(pattern, string)은 지정한 정규식 패턴과 일치하는 부분을 구분 기호로 삼아 문자열을 분할하고, 그 결과를 리스트로 반환합니다. 구분 기호가 여러 개일 때는 OR 연산자인 파이프(|)로 패턴을 연결하면 됩니다.예제다음 코드는 세미콜론(;), 쉼표(,)
파이썬(Python)에서는 re 모듈의 정규식을 활용하면 텍스트 속에 섞여 있는 숫자를 아주 간단하게 추출할 수 있습니다. 핵심은 findall() 함수와 숫자를 의미하는 패턴 \d, 그리고 반복 수량자 +의 조합입니다. 목적에 따라 두 가지 방식으로 나누어 살펴보겠습니다.1. 숫자를 한 자리씩 개별 추출하기텍스트에 포함된 모든 숫자를 개별 문자 단위로 추출하려면 다음과 같은 정규식 패턴을 사용합니다.예제import re s = 12345 abcdf 67 result = re.findall(r\d, s) print(result)실행
텍스트 데이터를 다루다 보면 문장 속에 섞여 있는 날짜 정보만 골라내야 하는 경우가 자주 있습니다. 이럴 때 파이썬의 re(정규식) 모듈을 활용하면 원하는 형식의 날짜를 간단하게 찾아낼 수 있습니다.기본 예제다음 예제는 주어진 문자열에서 YYYY-MM-DD 형식의 날짜를 정규식으로 검색한 뒤, 이를 datetime 객체로 변환하여 출력합니다.import datetime import re s = Jasons birthday is on 1991-09-21 match = re.search(r\d{4}-\d{2}-\d{2}, s) dat
텍스트나 문자열에서 부동소수점 숫자(실수)를 추출해야 하는 경우, Python의 re 모듈과 정규식을 활용하면 간단하게 처리할 수 있습니다. 이 글에서는 re.findall() 함수를 사용하여 문자열에 포함된 소수와 정수를 한 번에 추출하는 방법을 살펴보겠습니다.정규식 패턴 이해하기사용할 패턴은 [-+]?\d*\.\d+|\d+ 입니다.[-+]? : 부호(+ 또는 -)가 있을 수도 있고 없을 수도 있습니다.\d* : 소수점 앞에 오는 0개 이상의 숫자를 매칭합니다.\.\d+ : 소수점(.)과 그 뒤에 오는 하나 이상의 숫자를 매칭합니
텍스트 데이터를 다루다 보면 문자열 속에서 이메일 주소만 골라내야 하는 경우가 자주 있습니다. 파이썬에서는 re 모듈의 정규식(Regular Expression)을 활용하면 간단하게 이메일 주소를 추출할 수 있습니다.정규식 패턴 설명이메일 주소는 일반적으로 사용자이름@도메인 형태로 구성됩니다. 이를 찾기 위해 다음과 같은 패턴을 사용할 수 있습니다.[a-zA-Z0-9] : 알파벳 대소문자 또는 숫자로 시작\S*@ : 공백 없는 문자들이 @ 기호 앞에 위치\S*[a-zA-Z] : @ 뒤에 공백 없는 문자들이 오고, 알파벳으로 끝남예제
파이썬(Python)에서 정규식(Regular Expression)을 다룰 때 가장 먼저 접하게 되는 두 가지 기본 함수가 바로 re.match()와 re.search()입니다. 이 글에서는 실제 코드 예제를 통해 두 메서드의 동작 방식과 차이점을 자세히 살펴보겠습니다.1. re.match() – 문자열 시작 부분에서 일치 확인re.match() 메서드는 패턴이 문자열의 맨 앞부분과 일치할 때에만 매칭 결과를 반환합니다.예를 들어, TP Tutorials Point TP라는 문자열에서 TP라는 패턴을 찾으면 문자열이 TP로 시작하므
Python 정규식 특수 문자 ., ?, *의 차이점Python의 re 모듈에서 자주 사용되는 세 가지 특수 문자인 점(.), 물음표(?), 별표(*)는 각각 서로 다른 역할을 수행합니다. 이 글에서는 각 특수 문자의 의미와 동작 방식을 예제와 함께 살펴보겠습니다.1. 점(.): 임의의 한 문자와 매칭점(.)은 줄바꿈 문자를 제외한 모든 문자와 일치하는 특수 문자입니다. 기본 모드에서는 개행 문자(\n)와는 매칭되지 않지만, DOTALL 플래그가 지정되면 줄바꿈 문자를 포함한 모든 문자와 매칭됩니다.예를 들어 패턴 a.c는 abc,
정규 표현식(regex)은 대부분의 프로그래밍 언어에서 기본 문법이 거의 동일하게 구현되어 있습니다. Perl과 Python 역시 예외가 아니며, 핵심 기능은 서로 매우 유사합니다. 이 글에서는 두 언어의 정규 표현식을 비교하며 공통점과 차이점을 살펴보겠습니다. 1. 기본 문법 요소 거의 모든 정규 표현식 구현체에서 공통으로 지원되는 가장 기본적인 기능은 다음과 같습니다. 임의 문자: . (줄바꿈 문자를 제외한 임의의 한 문자) 수량자(quantifier): *, +, ? 앵커(anchor): ^ (문자열 시작), $ (문자열
Python 공식 문서가 말하는 scanf()의 부재Python 공식 문서에 따르면, Python에는 현재 C언어의 scanf()와 동일한 기능을 제공하는 내장 함수가 존재하지 않습니다. 대신 정규 표현식(Regular Expression)을 사용하는 것이 일반적입니다. 정규 표현식은 scanf() 형식 문자열보다 훨씬 강력한 기능을 제공하지만, 그만큼 문법이 길고 복잡해질 수 있다는 단점도 있습니다.아래 표는 scanf() 형식 토큰과 이에 대응하는 정규 표현식 간의 매핑 관계를 정리한 것입니다. 이 표를 참고하면 기존 C 코드의
정규 표현식(Regular Expression)이란? 정규 표현식은 주로 문자열이나 파일 안에서 특정 패턴(pattern)을 찾아내거나 검색·치환할 때 사용되는 하나 이상의 문자 나열입니다. 복잡해 보이지만, 기본 개념만 익히면 텍스트 처리 작업을 훨씬 효율적으로 수행할 수 있습니다. 파이썬 정규식 구문의 두 가지 문자 유형 파이썬의 정규식 구문은 크게 두 종류의 문자로 구성됩니다. 1. 메타 문자(Meta Characters) 이름에서 알 수 있듯이 메타 문자는 일반 문자가 아닌 특별한 의미를 지니는 문자입니다. 파일 검색에서
re.match(), re.search(), re.findall()은 모두 Python의 정규표현식(regular expression) 처리를 담당하는 re 모듈이 제공하는 핵심 메서드입니다. 세 메서드는 비슷해 보이지만 패턴을 검색하는 범위와 반환 방식에서 중요한 차이가 있습니다. 1. re.match() 메서드 re.match()는 문자열의 시작 부분에서만 패턴이 일치하는지 확인합니다. 문자열 중간에 패턴이 존재하더라도 시작 위치에서 일치하지 않으면 None을 반환합니다. 예를 들어, TP Tutorials Point TP라는
현재 Python의 re 모듈은 정규식이 컴파일될 때 그 결과를 내부 캐시에 저장합니다. 따라서 동일한 정규식을 다시 컴파일하려고 하면 새로 연산하지 않고 캐시에서 결과를 가져오기 때문에 추가 비용이 들지 않습니다. 이 캐시는 최대 100개의 항목까지 저장할 수 있으며, 100번째 항목에 도달하면 캐시 전체가 삭제되고 이후에는 다시 컴파일을 수행해야 합니다.캐시를 통째로 지우는 이유캐싱의 목적은 함수 호출의 평균 소요 시간을 줄이는 것입니다. 만약 캐시 한도에 도달했을 때 전체를 삭제하는 대신 _cache에 더 많은 정보를 유지하면
Python의 re 모듈로 정규식을 다룰 때 많은 개발자가 궁금해하는 부분 중 하나가 바로 예외(exception) 처리입니다. 이 글에서는 정규식 사용 시 어떤 상황에서 예외가 발생하고, 어떻게 캡처할 수 있는지 정리해 드립니다.매치 실패 시에는 예외가 발생하지 않습니다match() 메서드를 실행했을 때 문자열에서 패턴과 일치하는 결과를 찾지 못하면, 예외를 발생시키는 것이 아니라 None을 반환합니다. 즉, re 모듈에는 매치 결과 리스트나 매칭 객체가 비어 있을 때 예외를 던지는 함수가 존재하지 않습니다.따라서 매치 실패 여부
Python의 re 모듈을 사용하면 정규식 패턴에 포함된 캡처 그룹(capture group)의 개수를 손쉽게 확인할 수 있습니다. 핵심은 매치 객체(match object)에서 제공하는 groups() 메서드를 활용하는 것입니다.캡처 그룹 개수 구하기groups() 메서드는 매치된 문자열 중 각 캡처 그룹에 해당하는 부분을 튜플(tuple) 형태로 반환합니다. 따라서 이 튜플에 len() 함수를 적용하면 캡처 그룹의 총 개수를 바로 알 수 있습니다.예제 코드import re m = re.match(r(\d)(\d)(\d), 632
파이썬에서 정규 표현식과 일치하는 모든 항목을 찾으려면 re 모듈의 re.findall() 또는 re.finditer() 메서드를 사용하면 됩니다. 두 메서드의 사용법과 차이점을 살펴보겠습니다.1. re.findall() – 일치하는 문자열의 리스트 반환re.findall(pattern, string)은 대상 문자열에서 패턴과 일치하는 모든 부분을 검색한 뒤, 결과를 문자열 리스트 형태로 반환합니다. 가장 간단하고 직관적인 방법입니다.import retext = 고양이 강아지 새 고양이result = re.findall(r고양이,
re.finditer()로 부사와 그 위치 찾기파이썬 공식 문서에 따르면, 패턴에 매칭되는 모든 결과를 단순히 매칭된 문자열 이상의 정보와 함께 얻고 싶다면 finditer() 함수가 유용합니다. findall()이 매칭된 문자열의 리스트를 반환하는 것과 달리, finditer()는 각 매칭에 대한 매치 객체(match object)를 순차적으로 반환하기 때문입니다.예를 들어, 한 작가가 자신의 글에서 모든 부사(-ly로 끝나는 단어)와 그 정확한 위치를 찾고 싶다고 가정해 보겠습니다. 이때 finditer()를 다음과 같이 활용할
정규식(Regular Expression)을 사용하면 문자열에서 연속으로 반복되는 숫자를 간단하게 찾을 수 있습니다. 아래 예제는 파이썬의 re 모듈을 활용하여 주어진 문자열에서 같은 숫자가 4번 연속으로 반복되는 구간을 검색하는 방법을 보여줍니다. 예제 import re result = re.search(r(\d)\1{3}, 54222267890) print(result.group()) 출력 결과 2222 정규식 패턴 설명 (\d): 하나의 숫자를 매칭하고 캡처 그룹으로 저장합니다. \1: 역참조(backreference)로,
파이썬 공식 문서에 따르면, 정규식에서 특수 문자가 아닌 일반 문자는 자기 자신과 일치하지만, 특수 문자는 자기 자신과 일치하지 않고 각각 고유한 기능을 수행합니다. 아래에서 주요 특수 문자의 역할을 항목별로 정리했습니다.1. 주요 특수 문자의 의미\특수 문자를 이스케이프(escape)하거나 \d, \w 같은 특수 시퀀스를 시작합니다..줄바꿈(\n)을 제외한 임의의 한 문자와 일치합니다. re.DOTALL 플래그를 사용하면 줄바꿈 문자도 포함해 매칭합니다.^문자열의 시작 위치와 일치합니다. re.MULTILINE 플래그를 사용하면