정규표현식(regular expression)은 일정한 규칙(패턴)을 가진 문자열을 표현하는 방법이다.
간단하게 문자열에 특정 문자열이 되어있는지 알아보자. 정규표현식은 re 모듈을 가져와서 match 함수에 정규표현식 패턴과 판단할 문자열을 넣는다.
import re
a = re.match("Hello", "Hello, World!")
print(a)
<re.Match object; span=(0, 5), match='Hello'>
"Hello, World!" 문자열 안에 "Hello"문자열이 있으므로 매치(SRE_Match)객체가 반환된다. 만약 없다면 None이 반환된다.
위 기능은 "Hello, World!".find("Hello")로도 구현할 수 있다.
정규표현식은 특정 문자열이 맨 앞에 오는지 맨 뒤에 오는지 판단할 수 있다. 문자열 앞에 ^ 를 붙이면 맨 앞에 오는지 판단하고, 문자열 뒤애 $ 를 붙이면 문자열이 맨 뒤에 오는지 판단한다.
이때는 search 함수를 사용한다.
import re
a = re.search("^Hello", "Hello, World!")
b = re.search("World!$", "Hello, World!")
print(a)
print(b)
<re.Match object; span=(0, 5), match='Hello'>
<re.Match object; span=(7, 13), match='World!'>
| 연산자를 사용한다.
import re
a = re.match("Hello|World", "Hello")
print(a)
<re.Match object; span=(0, 5), match='Hello'>
# 정규표현식(regular expression)은 일정한
# 규칙(패턴)을 가진 문자열을 표현하는 방법이다.
import re
# . (ca.e) : 하나의 문자 >> care, cafe, case
# ^ (^de) : 문자열의 시작 >> desk, destination
# $ (se$) : 문자열의 끝 >> case, base
p = re.compile("ca.e")
def print_match(m):
if m:
print("m.group() :", m.group()) # 일치하는 문자열
print("m.string :", m.string) # 입력 문자열
print("m.start() :", m.start()) # 일치하는 시작 index
print("m.end() :", m.end()) # 일치하는 끝 index
print("m.span() :", m.span()) # 시작, 끝 index
else:
print(" * not matched *")
# < match >
# 주어진 문자열이 처음부터 일치하는지 확인
m = p.match("careless")
print_match(m)
print()
# < search >
# 주어진 문자열 중에 일치하는게 있는지 확인
m = p.search("good care")
print_match(m)
print()
# < findall >
# 일치하는 모든 것을 리스트로 반환
lst = p.findall("good care case")
print(lst)
print()