본문 바로가기
언어/파이썬

파이썬 정규표현식 (2) : search match findall finditer

by tovantablack 2020. 12. 17.
728x90
728x90

import re //정규표현식 쓰기 전 임포트 해줘야 함

p = re.compile(‘ab*’) //이렇게 패턴(조건)을 선언해놓고

m = p.match(“string”) //이런 식으로 문자열의 처음부터 정규식과 매치하는지 체크
match
의 결과로는 match 객체(매치 있을 때) 혹은 none(매치되는 게 없을 때) 으로 나와서 이 결과를 활용해서 사용가능.

=> 저 두 줄 줄여서 m = re.match(‘ab*’, “string”) 로 써도 됨. 한 번 만든 패턴 여러 번 안 쓸 때
if m:

   print(‘Match found: ’, m.group()) //그룹은 매치된 문자열 리턴

else:

   print(‘no Match’)

m = p.search(“문자열”) //문자열 전체를 검색해서 매치되는 부분이 있으면 매치라고 뜸. m.index로 매치된 부분의 주소를 찾아서 이용할 수 있음 매치되는 부분이 여러 부분이라면 첫번째만 리턴

m = p.findall(“~~”) //정규식과 매치되는 모든 문자열을 리스트로 돌려준다. 근데 위치는 리턴 안해줘서 여러 번 매칭이 되는데 원본의 주소를 알고 싶을 때는 무용.

m = p.finditer(“WEDFD”) //정규식과 매치되는 모든 문자열을 반복 가능한 객체로 돌려준다. 매치된 객체로 for문을 돌릴 수 있다는 얘기.

 

결과값으로 리턴된 match 객체는 다음과 같은 메서드 사용이 가능하다.

m=p.match(“python”)

m.group() //매치된 문자열 리턴 ‘python’

m.start() //매치된 문자열의 시작 위치 리턴 0

m.end() //매치된 문자열의 끝 위치 리턴 6

m.span() //매치된 문자열의 튜플을 (시작, ) 형태로 리턴 (0, 6)

 

m=p.search(“3 python”)

m.group() //매치된 문자열 리턴 ‘python’

m.start() //매치된 문자열의 시작 위치 리턴 2

m.end() //매치된 문자열의 끝 위치 리턴 8

m.span() //매치된 문자열의 튜플을 (시작, ) 형태로 리턴 (2, 8)

 

re.IGNORECASE 또는 re.I 옵션은 대소문자 구별 없이 매치를 수행 p = re.compile('[a-z]', re.I)

re.MULTILINE 옵션은 ^, $ 메타 문자를 문자열의 각 줄마다 적용해 주는 것
^
는 문자열의 처음, $는 문자열의 마지막을 의미
정규식이 ^python인 경우 문자열의 처음은 항상 python으로 시작해야 매치되고,
정규식이 python$이라면 문자열의 마지막은 항상 python으로 끝나야 매치

728x90
728x90

댓글