파이썬 정규 표현식을 사용하면 문자열에서 숫자가 아닌 문자만 손쉽게 추출할 수 있습니다. 정규 표현식에서 \D는 "숫자(digit)가 아닌 문자"를 의미하는 메타 문자로, 숫자 한 글자를 뜻하는 \d의 반대 개념입니다. \D+처럼 수량자를 붙이면 연속된 비숫자 문자들을 하나의 그룹으로 묶어서 매칭합니다.
re.search()로 숫자가 아닌 문자 찾기
다음 코드는 주어진 문자열에서 숫자가 아닌 부분만 검색합니다.
import re m = re.search(r'\D+', '5Need47for Speed 2') print(m)
출력 결과
<re.Match object; span=(1, 5), match='Need'>
re.search()는 패턴과 일치하는 첫 번째 위치만 반환합니다. 위 예제에서는 문자열에서 처음 등장하는 연속된 비숫자 문자인 'Need'를 찾아내며, 반환값은 매치 객체(Match object)입니다.
re.findall()로 모든 숫자가 아닌 문자 찾기
문자열에 포함된 모든 숫자가 아닌 부분을 리스트 형태로 얻으려면 re.findall()을 사용합니다.
import re m = re.findall(r'\D+', '5Need47for Speed 2') print(m)
출력 결과
['Need', 'for Speed ']
re.findall()은 일치하는 모든 부분을 리스트로 반환합니다. 이 예제에서는 숫자 5, 47, 2를 기준으로 문자열이 나뉘어 'Need'와 'for Speed '라는 두 개의 요소가 추출되었습니다.
참고 사항
\D는[^0-9]와 동일한 의미입니다.- 공백과 특수 문자도 "숫자가 아닌 문자"에 포함되므로, 공백까지 제외하고 싶다면
r'[^\d\s]+'와 같은 패턴을 사용할 수 있습니다. - 일부 오래된 예제에서 볼 수 있는
print m은 파이썬 2 문법이며, 파이썬 3에서는print(m)처럼 괄호를 사용해야 합니다.