[python] 정규표현식을 이용한 문자열 검색
정규표현식은 문자열에서 패턴을 찾거나 매칭하기 위한 강력한 도구입니다. Python의 re
모듈을 사용하여 정규표현식을 쉽게 적용할 수 있습니다.
정규표현식 패턴 작성
문자열 검색을 위해 먼저 정규표현식 패턴을 작성해야 합니다. 패턴은 검색하고자 하는 문자열 패턴을 기술합니다. 예를 들어, 이메일 주소를 검색하기 위한 패턴은 다음과 같을 수 있습니다.
pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b'
위의 패턴은 이메일 주소의 일반적인 형식을 나타냅니다. 이해하기 쉽도록 패턴에 대한 각 부분을 설명하겠습니다:
\b
: 단어의 경계를 나타냅니다.[A-Za-z0-9._%+-]+
: 이메일 주소의 로컬 파트를 나타냅니다. 영문 대소문자, 숫자, 점 및 특수문자를 허용합니다.@
: 이메일 주소에서 로컬 파트와 도메인 파트를 구분하는 기호입니다.[A-Za-z0-9.-]+
: 이메일 주소의 도메인 파트를 나타냅니다. 영문 대소문자, 숫자, 점 및 하이픈을 허용합니다.\.
: 도메인의 점(.)을 나타냅니다.[A-Za-z]{2,}
: 최소 두 개의 영문 알파벳을 포함하는 도메인 뒷부분을 나타냅니다.\b
: 단어의 경계를 나타냅니다.
문자열 검색
이제 정규표현식 패턴을 작성했으므로, 이를 사용하여 문자열에서 검색을 수행할 수 있습니다. Python의 re
모듈의 search()
함수를 사용하여 문자열 검색을 수행할 수 있습니다.
import re
text = "이메일 주소는 abc@example.com 입니다."
pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b'
match = re.search(pattern, text)
if match:
print("이메일 주소를 찾았습니다:", match.group())
else:
print("이메일 주소를 찾을 수 없습니다.")
위의 예제에서는 주어진 텍스트 내에서 이메일 주소를 검색하는 방법을 보여줍니다. 검색 결과는 match
객체로 반환되며, group()
메서드를 사용하여 검색된 문자열을 가져올 수 있습니다.
여러 개의 문자열 검색
정규표현식을 사용하여 한 번에 여러 개의 문자열을 검색할 수도 있습니다. findall()
함수를 사용하여 검색된 모든 결과를 리스트로 반환할 수 있습니다.
import re
text = "이메일 주소는 abc@example.com과 def@example.com입니다."
pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b'
matches = re.findall(pattern, text)
if matches:
print("검색된 이메일 주소 목록:")
for match in matches:
print(match)
else:
print("이메일 주소를 찾을 수 없습니다.")
위의 예제에서는 주어진 텍스트에서 모든 이메일 주소를 검색하고, 검색된 결과 목록을 출력하는 방법을 보여줍니다.
결론
Python의 re
모듈을 사용하여 정규표현식을 이용한 문자열 검색을 수행할 수 있습니다. 정규표현식을 잘 활용하면 특정 패턴을 가진 문자열을 빠르고 정확하게 찾을 수 있습니다.