Published 2021. 1. 22. 08:45

\

  1. 다른 문자와 함께 사용되어 특수한 의미를 지님
    • \d : 숫자를 [0-9]와 동일
    • \D : 숫자가 아닌 문자 [^0-9]와 동일
    • \s : 공백 문자(띄어쓰기, 탭, 엔터 등)
    • \S : 공백이 아닌 문자
    • \w : 알파벳대소문자, 숫자 [0-9a-zA-Z]와 동일
    • \W : non alpha-numeric 문자 [^0-9a-zA-Z]와 동일
  2. 메타 캐릭터가 캐릭터 자체를 표현하도록 할 경우 사용
    • \. , \\

 

re.search(r'\sba','i like babana')

>> <re.Match object; span=(6, 9), match=' ba'>

 

re.search(r'\.\?', '뭐야 이게.?') # \다음 문자 그자체를 찾는다.

<re.Match object; span=(5, 7), match='.?'>

.

  • 모든 문자를 의미
re.search(r'e..o', 'hi hello')

>> <re.Match object; span=(4, 8), match='ello'>

반복패턴

  • 패턴 뒤에 위치하는 *, +, ?는 해당 패턴이 반복적으로 존재하는지 검사 
    • '+' -> 1번 이상의 패턴이 발생
    • '*' -> 0번 이상의 패턴이 발생
    • '?' -> 0 혹은 1번의 패턴이 발생
  • 반복을 패턴의 경우 greedy하게 검색 함, 즉 가능한 많은 부분이 매칭되도록 함
    • e.g) a[bcd]*b 패턴을 abcbdccb에서 검색하는 경우
      • ab, abcb, abcbdccb 전부 가능 하지만 최대한 많은 부분이 매칭된 abcbdccb가 검색된 패턴

 

re.search(r'a[bcd]*b','abcbdccb') # 후보군 중에서 가장 마지막에 찾은 것을 추출한다.

>> <re.Match object; span=(0, 8), match='abcbdccb'>

가능한 많은 부분이 매칭되게 하기 때문에 가장 마지막에 찾은 것을 추출한다.

 

re.search(r'b\w+a','bananaa') # \w:알파벳,숫자 +: 앞의 패턴이 반복

>> <re.Match object; span=(0, 7), match='bananaa'>

 

+와 *의 차이

re.search(r'pi+g','pgii') # + : 1번 이상 앞의 패턴이 반복된 것을 추출한다.

>> None
re.search(r'pi*g','pgii') # * : 0번 이상 앞의 패턴이 반복된 것을 추출한다.

>> <re.Match object; span=(0, 2), match='pg'>

 

 

?

re.search(r'httpk?','http://naver.com')

>> <re.Match object; span=(0, 4), match='http'>

k가 0번 나오거나 1번 나오거나 

 

 

^, $

  1. ^ : 문자열의 맨 앞부터 일치하는 경우 검색
  2. $ : 문자열의 맨 뒤부터 일치하는 경우 검색

 

{} ?

  • {m,n}의 경우 m번 에서 n번 반복하나 greedy하게 동작
  • {m,n}?로 사용하면 non-greedy하게 동작. 즉, 최소 m번만 매칭하면 만족
re.search('pi{3}g','piiiig') # 검출 안된다.
re.search('pi{3,5}g','piiiig') # i를 최소 3번에서 최대 5번 검출하라

 

re.search('<.+>','<html>haha</html>')
re.search('<.+?>','<html>haha</html>')


>> <re.Match object; span=(0, 17), match='<html>haha</html>'>
>> <re.Match object; span=(0, 6), match='<html>'>

? 를 붙이면 greedy 하지 않게 검출된다.

 

 

re.search(r'a{3,5}', 'aaaaa')
re.search(r'a{3,5}?', 'aaaaa')

>> <re.Match object; span=(0, 5), match='aaaaa'>
>> <re.Match object; span=(0, 3), match='aaa'>

'📌 Python' 카테고리의 다른 글

Python - Tensor  (0) 2021.01.27
Python - 정규표현식 (3)  (0) 2021.01.24
Python - 정규표현식 (1)  (0) 2021.01.22
Python - 복소수 함수 만들기  (0) 2021.01.21
Python - 기본 타입으로 함수 만들기  (0) 2021.01.21
복사했습니다!