본문 바로가기
프로그래밍_기타 언어

파이썬(Python) 정규표현식 사용

by 떠도리c 2024. 9. 22.
반응형

파이썬에서 정규표현식 사용하기

파이썬에서 정규표현식 사용할 때는 re 모듈 import하여 사용한다.

메서드

Method  목적
match() 문자열의 처음부터 정규식과 매치되는지 조사한다.
search() 문자열 전체를 검색하여 정규식과 매치되는지 조사한다.
findall() 정규식과 매치되는 모든 문자열(substring)을 리스트로 리턴한다.
finditer() 정규식과 매치되는 모든 문자열(substring)을 반복 가능한 객체로 리턴한다.

예제

ip 리스트에 사설 IP만 출력하는 예제를 보자.

import re

ip = ['192.168.0.100', '10.10.10.10', '193.232.111.222', '184.231.231.122']
reg = re.compile(
    '10(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])){3}|192\.168(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])){2}|172\.(?:1[6-9]|2[0-9]|3[01])(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])){2}')

s = []

for i in ip:
    try:
        searchRes = reg.search(i)
        s.append(searchRes)
    except:
        pass

print(s)

# 결과
[<re.Match object; span=(0, 13), match='192.168.0.100'>, <re.Match object; span=(0, 11), match='10.10.10.10'>, None, None]

위 결과를 보면 사설 IP만 match 되고 공인 IP는 None으로 출력된다.

위 출력 결과에서 match 결과만 가져오기 위해 group() 메서드를 사용해서 출력하면 IP값만 출력된다.

import re

ip = ['192.168.0.100', '10.10.10.10', '193.232.111.222', '184.231.231.122']
reg = re.compile(
    '10(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])){3}|192\.168(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])){2}|172\.(?:1[6-9]|2[0-9]|3[01])(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])){2}')

s = []

for i in ip:
    try:
        searchRes = reg.search(i)
        res = searchRes.group()
        s.append(res)
    except:
        pass

print(s)

# 결과
['192.168.0.100', '10.10.10.10']

 

반응형