정규식(Regular Expression)은 문자열 패턴을 정의하는데 사용되는 강력한 도구입니다. 이것은 특정 패턴을 찾거나 일치하는 문자열을 추출하거나 대체하는 작업에 유용합니다. 정규식 매칭 작업을 수행할 때 어떻게 일부분의 매칭된 문자열을 추출할 수 있는지 알아보겠습니다. 이를 위해 Python의 re
모듈을 사용할 것입니다.
Python의 정규식 모듈(re
)은 search()
함수를 통해 문자열에서 패턴을 찾습니다. 이 함수는 매칭된 첫 번째 패턴 객체(Match Object
)를 반환합니다. 이제 패턴에 그룹명을 지정하여 간편하게 매칭된 문자열을 추출할 수 있도록 하는 방법을 알아보겠습니다.
그룹명 지정 매칭
정규식 패턴에서 그룹명을 지정하려면 (?P<그룹명>패턴)
형식을 사용해야 합니다. 그룹명은 패턴 내의 특정 그룹에 할당됩니다. 이제 예제 코드를 사용하여 그룹명을 지정하고 매칭된 문자열을 추출하는 방법을 알아보겠습니다.
import re
text = "Hello, my name is John Doe. I am from Pythonville."
pattern = r"(?P<name>\b\w+\b)"
# 패턴 매칭
match = re.search(pattern, text)
# 그룹명으로 매칭된 문자열 추출
name = match.group('name')
print(f"이름: {name}")
위의 코드에서는 Hello, my name is John Doe. I am from Pythonville.
이라는 문장에서 이름 부분을 추출하고자 합니다. 패턴 (?P<name>\b\w+\b)
은 단어로 구성된 부분의 매칭을 찾습니다.
re.search()
함수를 사용하여 패턴을 찾고, match.group('name')
을 통해 해당 그룹에서 매칭된 문자열을 추출합니다. 결과적으로, 위 코드는 이름: John
을 출력합니다.
그룹명 지정된 매칭과 함께 추가적인 매칭
때로는 그룹명 지정된 매칭과 함께 다른 정규식 패턴에 일치하는 문자열도 추출해야 할 수 있습니다. 이를 위해 search()
함수를 연속해서 사용하면 됩니다. 아래 예제 코드를 확인해보세요.
import re
text = "Hello, my name is John Doe. I am from Pythonville."
pattern_name = r"(?P<name>\b\w+\b)"
pattern_location = r"(?P<location>\b\w+\bville)"
# 이름 추출
match_name = re.search(pattern_name, text)
name = match_name.group('name')
# 위치 추출
match_location = re.search(pattern_location, text)
location = match_location.group('location')
print(f"이름: {name}")
print(f"위치: {location}")
위의 예제에서는 Hello, my name is John Doe. I am from Pythonville.
이라는 문장에서 이름과 위치를 추출합니다. 이름 패턴은 앞서 설명한 그룹명으로 정의되었으며, (?P<location>\b\w+\bville)
로 정의된 위치 패턴을 사용합니다.
search()
함수를 연속해서 사용하여 각 패턴에 대해 매칭된 문자열을 추출하고, 그룹명을 통해 해당하는 값을 가져옵니다. 결과적으로, 위 코드는 다음과 같이 출력합니다.
이름: John
위치: Python
위의 예제 코드를 참고하여, 그룹명을 지정한 정규식 매칭을 활용하여 자신의 프로젝트나 작업에 맞게 활용해보세요. 정규식의 그룹명 지정 기능은 문자열 매칭 작업을 보다 효과적으로 처리할 수 있도록 도와줍니다.