본문 바로가기

Python

PYTHON 문법 파이썬 정규표현식이 헷갈리면 이렇게 사용해 봅시다

반응형

정규표현식은 왜 필요한가 ? 

예를 들어 주민번호 

920116-*******

문자열 관련된 복잡한 코딩을 단순화 해줄 수 있다. 

match

import re

p = re.compile("[a-z]+")

m = p.match("python")

print(m)


>>>
<re.Match object; span=(0, 6), match='python'>
import re

p = re.compile("[a-z]+")

m = p.match("3python")

print(m)

>>>
None

a-z 사이의 값이 아닌 다른게 들어가면 None값이 나온다.

search

import re

p = re.compile("[a-z]+")

m = p.search("3python")

print(m)



>>>
<re.Match object; span=(1, 7), match='python'>

다른 값이 섞여 있어도 기존 값에 맞는 값이 있으면 찾아 준다. 

findall

import re

p = re.compile("[a-z]+")

m = p.findall("life is too short")

print(m)


>>>
['life', 'is', 'too', 'short']

 

finditer

import re

p = re.compile("[a-z]+")

m = p.finditer("life is too short")

for i in m:
    print(i)
    
    
>>>

<re.Match object; span=(0, 4), match='life'>
<re.Match object; span=(5, 7), match='is'>
<re.Match object; span=(8, 11), match='too'>
<re.Match object; span=(12, 17), match='short'>

match 객체 의 메서드 

  • group()
  • start()
  • end()
  • span()
import re

p = re.compile("[a-z]+")

m = p.match("python3")

print(m.group())
print(m.start())
print(m.end())
print(m.span())


>>>
python
0
6
(0, 6)

compile option : re.DOTALL

import re

p = re.compile("a.d", re.DOTALL)

m = p.match("a\nd")

print(m)



>>>

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

ignorecase

import re

p = re.compile("[a-z]", re.I)

m = p.match("Python")

print(m)


>>>
<re.Match object; span=(0, 1), match='P'>

multiline

import re

p = re.compile("^python\s\w+",re.M)

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

m = p.findall(data)

print(m)


>>>
['python one', 'python two', 'python three']

 

반응형