{}
- *, +, ?을 사용하여 반복적인 패턴을 찾는 것이 가능하나, 반복의 횟수 제한은 불가
- 패턴 뒤에 위치하는 중괄호{}에 숫자를 명시하면 해당 숫자만큼의 반복인 경우에만 매칭
- {4} - 4번 반복
- {3,4} - 3 ~ 4번 반복
import re
re.search('pi+g', 'piiig')
re.search('pi{3,5}g', 'piiig')
미니멈 매칭 (non-greedy way)
- 기본적으로 *, +, ?를 사용하면 greedy(맥시멈 매칭)하게 동작함
- *?, +?를 이용하여 해당 기능 구현
import re
re.search(r'<.+?>', '<html>haha</html>')
{}?
- {m,n}의 경우 m번에서 n번 반복하나 greedy하게 동작
- {m,n}?로 사용하면 non-greedy하게 동작. 즉, 최소 m번만 매칭하면 만족
import re
re.search(r'a{3,5}?', 'aaaaa')
match
- search와 유사하나, 주어진 문자열의 시작부터 비교하여 패턴이 있는지 확인
- 시작부터 해당 패턴이 존재하지 않다면 None 반환
import re
re.match(r'\d\d\d', 'my number is 123')
re.match(r'\d\d\d', '123 is my number')
findall
- search가 최초로 매칭되는 패턴만 반환한다면, findall은 매칭되는 전체의 패턴을 반환
- 매칭되는 모든 결과를 리스트 형태로 반환
import re
re.findall(r'[\w-]+@[\w.]', 'test@gmail.com haha test@gmail.com ince test test')
sub
- 주어진 문자열에서 일치하는 모든 패턴을 replace
- 그 결과를 문자열로 다시 반환
- 두번째 인자는 특정 문자열이 될 수도 있고, 함수가 될 수도 있음
- count가 0인 경우는 전체를, 1 이상이면 해당 숫자만큼 치환됨
import re
re.sub(r'[\w-]+@[\w.]', 'great', 'test@gmail.com haha test@gmail.com ince test test')
compile
- 동일한 정규표현식을 매번 다시 쓰기 번거로움을 해결
- compile로 해당 표현식을 re.RegexObject 객체로 저장하여 사용 가능
email_reg = re.compile(r'[\w-]+@[\w.]+')
email_reg.search('test@gmail.com haha good')
email_reg.findall()
#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #딥러닝강의
반응형