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) 을 사용