정규 표현식 (re.compile, matchobject, group())

joy·2022년 8월 29일
0

python

목록 보기
1/1

re.compile(검색할문자열)

  • re 모듈의 compile 함수는 정규식 패턴을 입력으로 받아들여 정규식 객체를 리턴한다.
  • 즉 re.compile(검색할문자열)과 같이 함수를 호출하면 정규식 객체 (re.RegexObject 클래스 객체)를 리턴하게 된다.

re.RegexObject 클래스의 메서드

  • search() : 특정 문자열을 검색하여 처음 매칭되는 문자열을 리턴
    • search()는 검색 대상이 있으면 결과를 갖는 MatchObject 객체를 리턴하고, 맞는 문자열이 없으면 None 을 리턴한다.
  • findall() : 매칭되는 모든 경우를 리턴

group()

  • MatchObject 객체로부터 실제 결과 문자열을 얻기 위해서는 group()을 사용한다.
import re

text = "에러 1122 : 레퍼런스 오류\n 에러 1033: 아규먼트 오류"
regex = re.compile("에러 1033")  # re.RegexObject 객체, re.compile('에러 1033')
mo = regex.search(text) # MatchObject 객체, <re.Match object; span=(19, 26), match='에러 1033'>
if mo != None:
    print(mo.group()) # 에러 1033

정규식 그룹(Group)

  • 정규 표현식에서 ( ) 괄호는 그룹을 의미
  • 전화번호의 패턴을 \d{3}-\d{3}-\d{4} 라고 했을 때, 앞 3개의 번호와 뒤 7개 번호, 총 2 그룹으로 나누고 싶다면
    • (\d{3})-(\d{3}-\d{4}) 와 같이 둥근 괄호로 묶어 두 그룹으로 분리
  • 이렇게 분리된 그룹들은 MatchObject의 group() 메서드에서 그룹 번호를 파라미터로 넣어 값을 가져올 수 있는데,
    • 첫번째 그룹 지역번호는 group(1) 으로, 두번째 그룹은 group(2) 와 같이 사용한다.
    • 전체 전화번호를 가져올 때는 group() 혹은 group(0) 을 사용

Reference

http://pythonstudy.xyz/python/article/401-정규-표현식-Regex

profile
세상의 긍정적 변화에 기여하기

0개의 댓글