본문 바로가기

프로그래밍&IT/파이썬

[파이썬] 웹 스크래핑.2 - 정규 표현식 (regular expression)

정규 표현식 (Regular expression, 간단히 regexp, regex)

특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어

ex) 주민 등록 번호 , 이메일 주소 aa@a.com , IP 주소 체계 등

 

파이썬 정규표현식 라이브러리 : re

  • comple(패턴) : 패턴 입력
  • match (문자열) : 주어진 문자열로 확인
  • group() : 일치하는 문자열 반환
import re

p = re.compile('ca.e')
# . : 하나의 문자 의미. (ca.e) > care, case 등
# ^ : 문자열의 시작. (^de) > desk, dest 등
# $ : 문자열의 끝. (se$) > base, case 등

m = p.match("case")
# print(m.group()) # 매치되지 않으면 에러 발생
if m:
    print(m.group())
else:
    print("Not matched")
  • search(문자열) : 주어진 문자열 중에 일치하는 게 있는지 확인
  • m.string : 입력받은 문자열
  • m.start() : 일치하는 문자열의 시작 index
  • m.end() : 일치하는 문자열의 끝 index
  • m.span() : 일치하는 문자열의 시작 / 끝 index
  • search(문자열) : 주어진 문자열 중에 일치하는지 확인
def Print_Match(m):
    if m:
        print("group: ", m.group()) # 일치하는 문자열 반환
        print("string", m.string) # 입력받은 문자열
        print("start()", m.start()) # 일치하는 문자열의 시작 index
        print("end()", m.end()) # 일치하는 문자열의 끝 index
        print("span()", m.span()) # 일치하는 문자열의 시작 / 끝 index
    else:
        print("Not matched")

p = re.compile('ca.e')
m = p.search("good care") # search(): 주어진 문자열 중에 일치하는지 확인
Print_Match(m)

# 결과
# group:  care
# string good care
# start() 5
# end() 9
# span() (5, 9)

 

  • findall(문자열) : 일치하는 모든 것을 리스트 형태로 반환
p = re.compile('ca.e')
lst = p.findall("careless careee case cases") # findall : 일치하는 모든 것을 리스트 형태로 반환
print(lst)

# 결과 : ['care', 'care', 'case', 'case']

더 많은 내용을 보려면 구글링해야 할듯

파이썬 정규식 관련된 링크