[Python]정규 표현식

전예찬·2022년 4월 15일
0

문자 클래스[]

[abc]

[]사이의 문자들과 매치
a는 정규식과 일치하는 문자인 a가 있으므로 매치
before는 정규식과 일치하는 문자인 b가 있으므로 매치
dude는 정규식과 일치하는 문자인 abc중 어느 하나도 포함하고 이ㅛ지 않으므로 매치되지 않음
하이픈을 사용하여 From-To로 표현가능
ex [a-c] =[abc], [0-5] = [012345]

Dot(.)

a.b

줄바꿈을 제외한 모든 문자와 매치
aab는 가운데 문자 a가 모든 문자를 의미하는 '.'과 일치하므로 정규식과 매치
a0b는 가운데 문자 0가 모든 문자를 의미하는 '.' 과 일치하므로 정규식과 매치
abc 는 a문자와 b문자 사이에 어던 문자라도 하나는 있어야 하는 이 정규식과 일치하지 않으므로 매치되지 않는다.

반봇(*)

ca*t

ct는 a가 0번 반복괴어 매치
cat는 ark 0번이상 반복되어 매치(1번 반복)
caaat는 a가 0번 이상 반복되어 매치(3번 반복)

반복(+)

ca+t

ct는 aㅁ가 0번 반복되어 매치되지 않음
cat는 ark 1번 이상 반복되어 매치(1번 반복)
caaat는 a가 1번 이상 반복되어 매치(3번 반복)

반복({m,n})

ca{2}t

cat는 ark 1번 반복되어 매치되지 않음
caat는 a가 2번 반복되아 매치

ca{2,5}t

cat는 a가 1번만 반복되어 매치되지 않음
caat는 ark 2번 반복되어 매치
caaaaat는 a가 5번 반복되어 매치

반복({m,n},?)

ab?c

abc는 b가 1번 사용되어 매치
ac는 b가 0번 사용되어 매치
? == {0,1}와 같은 표현

파이썬에서 정규 표현식을 지원하는 re모듈

import re
p = re.compile('ab*')

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('3 python')
print(m)

>> None
import re

p = re.compile('[a-z]+')
m = p.search('python')
print(m)

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

p = re.compile('[a-z]+')
m = p.search('python')
print(m)

>> <re.Match o bject; span=(2, 8), match='python'>
profile
이제 시작

0개의 댓글

관련 채용 정보