[파이썬] 문자열의 정규식 매칭 시작과 끝

정규식(regular expression)은 문자열 패턴을 표현하고 매칭시키기 위한 강력한 도구입니다. 이를 사용하여 특정 문자열을 검색하거나, 문자열을 변형하거나, 패턴에 맞는 문자열을 추출할 수 있습니다. 이 중에서도 “시작”과 “끝”에 대한 정규식 매칭은 특히 유용하며, 이번 글에서는 이에 대해 알아보겠습니다.

1. 문자열의 시작과 끝을 매칭하는 특수 문자

정규식에서 문자열의 시작부분을 매칭하기 위해 ^ 기호를 사용하고, 끝부분을 매칭하기 위해 $ 기호를 사용합니다. 다음은 예시입니다.

import re

pattern = '^Hello'
result = re.match(pattern, 'Hello, World!')
print(result)  # <re.Match object; span=(0, 5), match='Hello'>

위 코드에서 ^Hello 패턴은 문자열의 시작이 “Hello”로 시작하는지 확인합니다. 따라서 “Hello, World!”라는 문자열은 정규식 패턴과 일치하므로 매칭 결과로 <re.Match object; span=(0, 5), match='Hello'>를 반환합니다.

2. 문자열의 시작과 끝에 특정 패턴이 포함되는지 매칭하기

시작과 끝의 패턴 매칭은 특정 패턴을 포함하는지 여부를 확인할 때 자주 사용됩니다. 예를 들어, 이메일 주소가 특정 도메인으로 끝나는지 확인하려면 다음과 같이 정규식을 사용할 수 있습니다.

import re

pattern = 'gmail.com$'
result = re.search(pattern, 'example@gmail.com')
print(result)  # <re.Match object; span=(7, 17), match='gmail.com'>

위 코드에서 gmail.com$ 패턴은 문자열의 끝이 “gmail.com”으로 끝나는지 확인합니다. 따라서 “example@gmail.com”이라는 문자열은 정규식 패턴과 일치하므로 매칭 결과로 <re.Match object; span=(7, 17), match='gmail.com'>를 반환합니다.

3. 여러 줄에 걸친 시작과 끝 매칭

만약 여러 줄로 구성된 문자열에서 각 줄의 시작과 끝을 매칭하고 싶다면, re.MULTILINE 플래그를 정규식 패턴과 함께 사용하여야 합니다. 예를 들어, 다음은 각 줄의 시작이 숫자로 시작하고 끝이 마침표로 끝나는지 확인하는 예제입니다.

import re

pattern = '^\d.*\.$'
text = '''
1. First line.
2. Second line.
3. Third line.
'''

result = re.findall(pattern, text, flags=re.MULTILINE)
print(result)  # ['1. First line.', '2. Second line.', '3. Third line.']

위 코드에서 ^\d.*\.$ 패턴은 각 줄의 시작이 숫자로 시작하고 끝이 마침표로 끝나는지 확인합니다. 따라서 주어진 여러 줄 문자열에서 이 조건에 맞는 줄들을 추출하고 결과로 ['1. First line.', '2. Second line.', '3. Third line.']을 반환합니다.

마무리

정규식을 사용하여 문자열의 시작과 끝을 매칭하는 방법에 대해 알아보았습니다. 이를 활용하면 원하는 문자열 패턴을 검색하고 추출할 수 있습니다. 문자열 처리에 유용한 이 기능을 여러분의 프로그래밍 프로젝트에 활용해 보세요!