본문 바로가기
프로그래밍 관련/파이썬

파이썬 정규표현식 괄호 내부 문자 추출하기

by 존버매니아.임베디드 개발자 2023. 2. 26.
반응형

Input Text : 695,000원 (1990/01) 연도별보기
추출하려는 데이터 형식 : 1990/01

import re	#정규식 라이브러리

test_str = "695,000원 (1990/01) 연도별보기"

#괄호 내부 내용만 추출
p = re.compile('\(([^)]+)')
m = p.findall(test_str)
print(m)

# 앞 뒤 괄호까지 붙여서 추출
p = re.compile('\([^)]+\)')
m = p.findall(test_str)
print(m)

 
 

출력 값:
['1990/01']
['(1990/01)']

메타문자 (Metacharacters) - Codetorial
메타 문자 참고 블로그
 
 

정규표현식    '\(([^)]+)'   해석하기
)

\(([^)]+)
\   <- \ 뒤에 오는 메타문자를 메타문자가 아니라 일반 문자열로 인식하게 만드는 기능
(  <- 왼쪽 괄호는 실제로는 메타문자인데, 우리는 이것을 실제로 사용할 문자로 하고싶기 때문에 앞에 \를 붙여서
\( 라고 적는 것이다.
 이렇게 함으로써 ( 괄호로 시작하는 패턴이라고 적은것임)
 
\(   (  [^)]+ 
 
여기서 사용된 괄호는 메타문자 괄호이다.
괄호 안에 적혀있는 정규표현식이 우리가 원하는 패턴이라는 소리..
무슨 말이냐면
A1([abc])C1
이런식으로 적혀있으면
패턴 매칭되려면
 
A1로 시작해서 C1로 끝나는 문자열 중에 중간에 a.b.c 중에 아무거나 라도 들어간게 패턴일치라는 소리.
그리고 이때 출력결과물에서 앞뒤 A1, C1은 제외되고 중간값만 출력
 
 
\( ([^)]+)
[ ]  <- 메타문자 대괄호.
대괄호안에 들어가는 내용이 우리가  패턴 일치시키기 원하는 내용이다.
ex) [abc] 는 문자 a, b, c의 집합입니다. a, b, c 중 하나라도 일치하면, 일치하는 문자가 됩니다
 
[^)]  근데 이건 무슨의미냐면
대괄호안에서 ^는 not을 의미하는데..
그 말은 즉슨
[^)]  의 의미 : 닫는 괄호를 제외한 것을.. 패턴 일치로 판단하겠다는 소리임
 
 
전체적으로 다시 해석해보면
괄호로 시작하면서..  ) 가 아닌 문자 연속으로 쭉 ..나오는 패턴 뽑는다는 소리.
내가 적으면서도 설명이 잘 안된다 ㅡ,.ㅡ;;
 
 
 

반응형