정규 표현식은 문자열을 패턴으로 매칭하고 검색하는 강력한 도구입니다. 파이썬에서는 re
모듈을 사용하여 정규 표현식을 다룰 수 있습니다. 정규 표현식으로 매칭된 문자열의 위치를 찾는 방법에 대해 알아보겠습니다.
1. search()
함수를 사용한 문자열 매칭
정규 표현식으로 매칭된 문자열의 위치를 찾기 위해선 search()
함수를 사용할 수 있습니다. 이 함수는 첫 번째로 매칭된 문자열을 찾아주며, Match
객체를 반환합니다. 해당 객체에는 매칭된 문자열의 시작과 끝 위치를 알려주는 start()
와 end()
메서드가 있습니다.
아래는 예제 코드입니다.
import re
pattern = r'apple'
text = 'I have an apple and a banana'
match = re.search(pattern, text)
if match:
start_pos = match.start()
end_pos = match.end()
print(f"Match found: '{match.group()}' at positions {start_pos}-{end_pos}")
else:
print("No match found")
위 코드는 'apple'
이라는 패턴과 'I have an apple and a banana'
라는 문자열을 비교합니다. re.search()
함수를 사용하여 첫 번째로 매칭된 문자열을 찾고, start()
와 end()
메서드를 사용하여 매칭된 문자열의 시작과 끝 위치를 출력합니다.
예상 출력은 다음과 같습니다.
Match found: 'apple' at positions 9-13
2. finditer()
함수를 사용한 모든 매칭 결과 찾기
만약 텍스트에서 정규 표현식과 일치하는 모든 부분을 찾고 싶을 경우에는 finditer()
함수를 사용할 수 있습니다. 이 함수는 이터레이터를 반환하며, 각 매칭 결과에 대한 Match
객체를 순회하면서 매칭된 문자열의 위치를 찾을 수 있습니다.
import re
pattern = r'apple'
text = 'I have an apple and a banana. I love apples'
matches = re.finditer(pattern, text)
for match in matches:
start_pos = match.start()
end_pos = match.end()
print(f"Match found: '{match.group()}' at positions {start_pos}-{end_pos}")
위 코드는 문자열 'apple'
을 "I have an apple and a banana. I love apples"
과 비교합니다. re.finditer()
함수를 사용하여 모든 매칭 결과를 찾고, 이후 for
루프를 통해 각 매칭 결과의 시작과 끝 위치를 출력합니다.
예상 출력은 다음과 같습니다.
Match found: 'apple' at positions 9-13
Match found: 'apple' at positions 29-33
결론
정규 표현식의 매칭 결과 문자열의 위치를 찾는 방법을 파이썬에서 알아보았습니다. search()
함수를 사용하면 첫 번째로 매칭된 문자열의 위치를 찾을 수 있고, finditer()
함수를 사용하면 모든 매칭 결과에 대한 위치를 찾을 수 있습니다. 이러한 기능을 활용하여 텍스트 처리와 검색 기능을 더욱 효과적으로 구현할 수 있습니다.
더 자세한 사항은 파이썬 공식 문서를 참조하십시오.