본문 바로가기

IT 차곡차곡/Python

[Python] 정규표현식5 - 컴파일 옵션 (DOTALL, IGNORECASE, MULTILINE)

정규표현식 - 컴파일 옵션

  •  re.DOTALL, re.S : .(메타문자)가 \n을 포함한 모든 한 문자와 일치하는지 검사
import re

pat1 = re.compile('a.b')
pat2 = re.compile('a.b', re.DOTALL)

print(pat1.match("a\nb"))
print(pat2.match("a\nb"))

결과

None
<re.Match object; span=(0, 3), match='a\nb'>

 

  •  re.IGNORECASE, re.I : 대소문자를 무시하고 일치하는지 검사
pat = re.compile("yes", re.IGNORECASE)

print(pat.match("yes"))
print(pat.match("Yes"))
print(pat.match("yES"))
print(pat.match("YES"))

결과

<re.Match object; span=(0, 3), match='yes'>
<re.Match object; span=(0, 3), match='Yes'>
<re.Match object; span=(0, 3), match='yES'>
<re.Match object; span=(0, 3), match='YES'>

 

  • re.MULTILINE, re.M : ^와 $와 함께 사용
  • ^ : 문자열의 처음을 의미한다. (전체 문자열 중 처음)
  • $ : 문자열의 끝을 의미한다.

 

data = """python one
life is too short
python two
you need python
python three"""

# 매 행마다 ^를 적용시킨다
pat = re.compile("^python\s[a-z]+", re.MULTILINE)

matchs = pat.finditer(data)

for match in matchs:
    print(match)

결과

<re.Match object; span=(0, 10), match='python one'>
<re.Match object; span=(29, 39), match='python two'>
<re.Match object; span=(56, 68), match='python three'>