프로그램/python

[python] 따옴표 안의 문자열을 추출하는 정규식

더월드 2023. 1. 10.

파이썬으로 데이터에서 특정 문자열로 감싸진 문자열을 추출하고 싶을때,

정규식 표현을 사용하면 쉽게 추출할 수 있습니다.

 

re.findall(pattern, text)
 
- pattern : 문자열의 pattern
- text : 찾을 대상 텍스트

 

< 사용된 정규식 표현 일부 >

[^문자]    괄호안의 문자를 제외한 것
*              반복패턴: 없거나 or 있거나 (여러개) /abc*/
+             반복패턴: 최소 한개 or 여러개 /abc+/
(?=)         앞쪽 일치(Lookahead), /ab(?=c)/
(?<=)       뒤쪽 일치(Lookbehind), /(?<=ab)c/ 

 

# 작은 따옴표 안의 문자
re.findall("'([^']*)'", str)

 

# 큰 따옴표 안의 문자
re.findall('"([^"]*)"', str)

 

# () 문자열 찾기
re.findall('\(([^)]+)', str)

 

# [] 문자열 찾기
re.findall('\[([^]]+)', str)

 

전체 코드는 아래와 같습니다.

# -*- coding: utf-8 -*-
import re

if __name__ == "__main__":
    des_str="""'문자열', (찾기), "예제", [클라이언트: 192.168.0.100]"""
    # 작은 따옴표 안의 문자
    str_splits = re.findall("'([^']*)'", des_str)
    print(str_splits)
    
    # 큰 따옴표 안의 문자
    str_splits = re.findall('"([^"]*)"', des_str)
    print(str_splits)
    
    # () 문자열 찾기
    str_splits = re.findall('\(([^)]+)', des_str)
    print(str_splits)
    
    # [] 문자열 찾기
    #str_splits = re.findall('\[([^]]+)', des_str)
    str_splits = re.findall('(?<=\[\클라이언트: )(.*?)(?=\])', des_str)
    #(?<=\[\클라이언트: ) : [클라이언트: 를 기준으로 그 뒤 문자열 탐색
    #(.*?) : 최소 패턴 일치, 뒤에 오는 문자열을 만날 때까지 포함
    #(?=\]) : ] 기준으로 그 앞 문자열 탐색
    print(str_splits)

실행 결과 화면은 아래와 같이 작은따옴표, 큰 따옴표, (), [] 문자열을 차례대로 찾아 프린트한 화면이 출력됩니다.

 

댓글

💲 추천 글