정규 표현식은 문자열을 처리하는 방법 중 하나로 '특정 조건 또는 패턴'을 치환하는 과정을 쉽게 처리할 수 있는 방법이다.
re 모듈이란 정규 표현식을 지원하기 위한 표준 라이브러리이다.
re를 사용하기 위해서는 re를 호출하고, re 내부 함수와 패턴을 정의하여 호출한다.
import re
re.match()
re.match() 함수는 문자열의 처음부터 시작해 패턴이 일치되는 것이 있는지를 확인한다.
re.match() 함수는 인자로 re.match(pattern, string, flags) 를 받는다.
matchObj = re.match('a', 'a')
print(matchObj)
print(re.match('a', 'aba'))
print(re.match('a', 'bbb'))
print(re.match('a', 'baa'))
#match의 결과를 바로 print하지는 않는다. 결과를 활용하는 방법은 matchObj.group 함수를 쓰는 것이다.
결과
<_sre.SRE_Match object; span=(0, 1), match='a'>
<_sre.SRE_Match object; span=(0, 1), match='a'>
None
None
위의 예시에서 첫번째는 패턴과 문자열이 동일하므로 매치되는 것을 확인할 수 있다.
두번째 예시는 문자열이 ‘a’로 시작하기 때문에 매치가 된다.
나머지 두 개는 ‘a’로 시작하지 않아 패턴 a와 매치되지 않는다. 매치되지 않을 때 re.match 함수는 None을 반환한다.
하이픈(-) 추가하면 두 문자 사이 범위를 의미
[a-zA-Z] : 알파벳
[0-9] : 숫자
\d : 숫자와 매치, [0-9] 와 동일
\D : 숫자 아닌 것과 매치, [^0-9] 와 동일
\s : whitespace 문자와 매치, [ \t\n\r\f\v] 와 동일. 맨앞 빈칸은 공백문자를 의미함.
\S : whitespace 문자 아닌 것과 매치, [^ \t\n\r\f\v]와 동일.
re.search()
re.search 함수는 문자열의 처음뿐 아니라 중간부터라도 패턴과 일치되는 부분이 있는지를 찾는다.
matchObj = re.search('a', 'a')
print(matchObj)
print(re.search('a', 'aba'))
print(re.search('a', 'bbb'))
print(re.search('a', 'baa'))
결과
<_sre.SRE_Match object; span=(0, 1), match='a'>
<_sre.SRE_Match object; span=(0, 1), match='a'>
None
<_sre.SRE_Match object; span=(1, 2), match='a'>
네 번째 문자열의 경우 1번째 index 'a'와 매치된다.
위의 결과에서 span=(0, 1)를 확인할 수 있는데, 이는 0번째 문자부터 1번째 문자 전까지 (즉, 0번째 문자 하나인 'a')가 패턴과 매치되었음을 의미한다.
re.findall()
re.findall() 함수는 문자열 중 패턴과 일치되는 모든 부분을 찾는다.
matchObj = re.findall('a', 'a')
print(matchObj)
print(re.findall('a', 'aba'))
print(re.findall('a', 'bbb'))
print(re.findall('a', 'baa'))
print(re.findall('aaa', 'aaaa'))
결과
['a']
['a', 'a']
[]
['a', 'a']
['aaa']
match Object의 메서드들
re.match 등의 결과로 얻은 matchObj를 활용하는 방법
Method | Desciption |
group() | 일치된 문자열을 반환한다. |
start() | 일치된 문자열의 시작 위치를 반환한다. |
end() | 일치된 문자열의 끝 위치를 반환한다. |
span() | 일치된 문자열의 (시작 위치, 끝 위치) 튜플을 반환한다. |
matchObj = re.search('match', "'matchObj' is a good name, but 'm' is convenient.")
print(matchObj)
print(matchObj.group())
print(matchObj.start())
print(matchObj.end())
print(matchObj.span())
결과
<_sre.SRE_Match object; span=(1, 6), match='match'>
match
1
6
(1, 6)
참조
https://kibua20.tistory.com/199
Python 정규식(Regular Expression) re 모듈 사용법 및 예제
정규식 표현식(Regular Expression)은 문자열을 처리하는 방법 중 하나로 "특정 조건 또는 패턴"을 치환하는 과정을 쉽게 처리할 수 있는 방법입니다. Python에서 정규식 처리 모듈은 re 로, re 모듈에 대
kibua20.tistory.com
Python, Machine & Deep Learning
Python, Machine Learning & Deep Learning
greeksharifa.github.io