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

정규 표현식은 문자열에서 패턴을 찾거나 변형하기 위해 사용되는 강력한 도구입니다. re 모듈을 사용하여 파이썬에서 정규 표현식을 쉽게 적용할 수 있습니다. 이번 포스트에서는 정규 표현식의 매칭 결과 문자열의 시작과 끝을 다루는 방법을 알아보겠습니다.

시작과 끝을 나타내는 메타 문자

정규 표현식에서는 문자열의 시작(^)과 끝($)을 나타내는 메타 문자를 사용할 수 있습니다. 이 메타 문자를 사용하면 패턴이 문자열의 시작 또는 끝과 정확히 일치하는지 판별할 수 있습니다.

예를 들어, 다음과 같은 문자열이 있다고 가정해봅시다.

text = "Welcome to Regex"

만약 문자열의 시작이 “Welcome”으로 시작하는지 확인하려면 다음과 같이 정규 표현식을 작성할 수 있습니다.

import re

pattern = r"^Welcome"
result = re.match(pattern, text)
print(result)

결과는 다음과 같이 출력됩니다.

<re.Match object; span=(0, 7), match='Welcome'>

위 결과에서 re.Match 객체가 반환되었으며, span=(0, 7)은 매칭된 부분의 시작과 끝 인덱스를 나타냅니다. match='Welcome'은 매칭된 부분 자체를 나타내고 있습니다.

또는 문자열의 끝이 “Regex”로 끝나는지 확인하려면 다음과 같이 작성할 수 있습니다.

pattern = r"Regex$"
result = re.search(pattern, text)
print(result)

결과는 다음과 같이 출력됩니다.

<re.Match object; span=(11, 16), match='Regex'>

위 예제에서는 re.search() 함수를 사용했습니다. re.search() 함수는 전체 문자열을 검색하여 매칭되는 첫 번째 부분을 찾아줍니다. 따라서 문자열의 어느 위치에 패턴이 매칭되어도 결과를 반환합니다.

다중 줄 문자열과의 매칭

정규 표현식의 시작(^)과 끝($) 메타 문자는 기본적으로 문자열의 시작과 끝과 매칭되지만, 다중 줄 문자열에서는 줄 바꿈 문자도 매칭의 대상이 됩니다.

예를 들어, 다음과 같은 다중 줄 문자열이 있다고 가정해봅시다.

text = "This is line 1\nThis is line 2\nThis is line 3"

만약 “line 1”로 시작하고 “line 3”으로 끝나는 줄을 찾고 싶다면 다음과 같이 작성합니다.

pattern = r"^This is line 1.*line 3$"
result = re.search(pattern, text, re.MULTILINE)
print(result)

결과는 다음과 같이 출력됩니다.

<re.Match object; span=(0, 35), match='This is line 1\nThis is line 2\nThis is line 3'>

위 예제에서는 re.MULTILINE 플래그를 사용하여 정규 표현식이 다중 줄 문자열에서 매칭될 수 있도록 설정하였습니다.

결론

정규 표현식의 매칭 결과에서 문자열의 시작과 끝을 확인하는 방법에 대해 알아보았습니다. ^$ 메타 문자를 사용하여 문자열의 시작과 끝을 판별할 수 있습니다. 또한 re.MULTILINE 플래그를 사용하여 다중 줄 문자열과의 매칭도 가능합니다. 정규 표현식을 적절히 활용하여 문자열 처리를 유연하게 수행할 수 있습니다.

이상으로 정규 표현식의 매칭 결과 문자열 시작과 끝에 대해 알아보았습니다. 감사합니다.

참고 링크: Python 정규 표현식 레퍼런스