정규식(Regular Expression)
- 문자열 패턴을 표현하는데 사용되는 특수한 문자열식이다.
- 문자열을 처리하고 분석하는데 매우 유용하다.
- 정규식을 사용하면 특정 패턴의 문자열을 검색하거나 추출하는 등 다양한 문자열 처리 작업을 쉽게 수행할 수 있다.
- 파이썬에서는 re 모듈을 통해 사용할 수 있다.
- 정규식은 일반적으로 패턴을 나타내는 특수한 의미를 가지는 문자인 메타 문자(meta character)로 이루어져 있다.

- 점(.): 어떤 문자가 와도 상관없다는 의미
- 별(*): 몇 번 반복되어도 상관없다는 의미

search()
- 주어진 패턴에 일치하는 첫번째 문자열만 반환 (결과값은 1개)
- 조건이 안맞으면 None 반홤
pattern = 'abc'
text = 'defabc'
new_search = re.search(pattern, text)
print(new_search)
print(new_search.start())
print(new_search.end())
print(new_search.span())
print(new_search.group())
- span=(3, 6): 일치하는 문자열의 인덱스
- match='abc': 검색 결과
text = '이번 학기 개설 과목은 CS101입니다.'
pattern = r'[A-Za-z]{2}\d{3}'
match = re.search(pattern, text)
if match:
print(f"과목 코드가 발견됨: {match.group()}")
else:
print(f"과목 코드가 발견되지 않음: {match}")
match()
- 주어진 문자열의 첫글자부터 일치하는 패턴 문자열을 반환 (결과값은 1개)
- 조건이 안맞으면 None 반홤
pattern = 'abc'
text = 'defabc'
new_search = re.match(pattern, text)
print(new_search)
findall()
- 일치하는 문자열을 모두 찾아서 리스트로 반환한다.
pattern = 'abc'
text = 'defabc dddabc ccccabc'
new_search = re.findall(pattern, text)
print(new_search)
메타문자 : .
- 임의의 문자 한 개를 의미하는 메타 문자이다.
pattern = 'A..A'
text = 'ABBACCACBA'
match = re.search(pattern, text)
print(match)
메타 문자 : *
- 직전에 있는 문자를 0회 이상 반복하는 패턴과 매치된다.
- 예를 들어 AB*는 A, AA, AB, ABB 등의 어떤 문자열과도 일치된다.
- 모두 A로 시작하고 B가 0회 이상 반복되기 때문이다.
print(re.search('AB*', 'A'))
print(re.search('AB*', 'ABB'))
메타 문자 : +
- 직전에 있는 임의의 패턴을 1회 이상 반복하는 패턴과 매치된다.
- 따라서 AB+는 A와는 매치되지 않으며 AB, ABB와 같은 패턴의 문자열과 일치한다.
print(re.search('AB+', 'A'))
print(re.search('AB+', 'AB'))
자주 사용하는 문자 클래스
| \d |
숫자와 매치된다. [0-9]와 동일한 표현식이다. |
| \D |
숫자가 아닌 것과 매치된다. [^0-9]와 동일한 표현식이다. |
| \s |
화이트스페이스(whitespace) 문자와 매치된다.
[ \t\n\r\f\v]와 동일한 표현식이다. 맨 앞의 빈칸은 공백 문 자(space)를 의미한다.
|
| \S |
화이트스페이스 문자가 아닌 것과 매치된다. [^ \t\n\r\f\v]와 동일한 표현식이다.
|
| \w |
문자+숫자(alphanumeric)와 매치된다. [a-zA-Z0-9_]와 동일한 표현식이다.
|
| \W |
문자+숫자(alphanumeric)가 아닌 문자와 매치된다. [^a-zA-Z0-9_]와 동일한 표현식이다
|
정규표현식 참고