정규 표현식을 compile
해서 사용하는 방법
파이썬에서 정규 표현식을 사용할 때, re
모듈의 compile
함수를 사용하여 정규 표현식을 미리 컴파일할 수 있습니다. 이는 동일한 정규 표현식을 여러 번 사용할 경우 성능을 향상시키는 데 유용합니다. 정규 표현식을 컴파일하면 이를 재사용할 수 있는 정규 표현식 객체가 생성됩니다. 이 객체는 매칭, 검색, 치환 등의 작업에 사용할 수 있습니다.
1. re
모듈의 compile
함수
re.compile()
함수는 정규 표현식을 컴파일하여 정규 표현식 객체를 반환합니다. 이를 통해 정규 표현식을 여러 번 사용할 때마다 새로 컴파일하지 않고도 사용할 수 있습니다.
import re
# 정규 표현식 컴파일
phone_pattern = re.compile(r'\(?\b[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}\b')
2. 컴파일된 정규 표현식 객체 사용
컴파일된 정규 표현식 객체는 match()
, search()
, findall()
, sub()
등의 메소드를 사용할 수 있습니다. 이를 통해 문자열에서 패턴을 매칭하거나, 검색하거나, 치환할 수 있습니다.
2.1. findall()
메소드 사용
import re
# 정규 표현식 컴파일
phone_pattern = re.compile(r'\(?\b[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}\b')
# 예제 문자열
example_text = """
Here are some phone numbers:
- (123) 456-7890
- 987-654-3210
- 555.123.4567
- 1234567890
- (800) 555 1234
"""
# findall 메소드 사용
phone_numbers = phone_pattern.findall(example_text)
print("Extracted phone numbers:", phone_numbers)
위 예제에서는 phone_pattern
객체의 findall
메소드를 사용하여 문자열에서 모든 전화번호를 추출합니다.
2.2. search()
메소드 사용
import re
# 정규 표현식 컴파일
phone_pattern = re.compile(r'\(?\b[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}\b')
# 예제 문자열
example_text = "Call me at (123) 456-7890."
# search 메소드 사용
match = phone_pattern.search(example_text)
if match:
print("Found phone number:", match.group())
else:
print("No phone number found")
위 예제에서는 phone_pattern
객체의 search
메소드를 사용하여 문자열에서 첫 번째로 매칭되는 전화번호를 검색합니다.
2.3. sub()
메소드 사용
import re
# 정규 표현식 컴파일
phone_pattern = re.compile(r'\(?\b[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}\b')
# 예제 문자열
example_text = "Call me at (123) 456-7890 or 987-654-3210."
# sub 메소드 사용
masked_text = phone_pattern.sub("###-###-####", example_text)
print("Masked text:", masked_text)
위 예제에서는 phone_pattern
객체의 sub
메소드를 사용하여 문자열에서 모든 전화번호를 ###-###-####
형식으로 마스킹합니다.
전체 코드 예제
위에서 설명한 내용을 종합하여, 컴파일된 정규 표현식을 사용하여 전화번호를 추출하는 전체 코드를 정리해보겠습니다.
import re
def extract_phone_numbers(text):
# 정규 표현식 컴파일
phone_pattern = re.compile(r'\(?\b[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}\b')
# findall 메소드 사용
phone_numbers = phone_pattern.findall(text)
return phone_numbers
example_text = """
Here are some phone numbers:
- (123) 456-7890
- 987-654-3210
- 555.123.4567
- 1234567890
- (800) 555 1234
"""
phone_numbers = extract_phone_numbers(example_text)
print("Extracted phone numbers:", phone_numbers)
이 코드는 정규 표현식을 컴파일하여 전화번호를 추출하는 예제입니다. 컴파일된 정규 표현식을 사용하면 동일한 패턴을 여러 번 사용할 때 성능을 향상시킬 수 있습니다.
'언어 > Python' 카테고리의 다른 글
[ Python ] 정규 표현식의 기본 구성 요소 (0) | 2024.07.20 |
---|---|
[ Python ] 정규 표현식에 플래그 (flag) 사용하기 (1) | 2024.07.10 |
[ Python ] 정규 표현식으로 전화번호 추출하기 (0) | 2024.07.10 |
[ Python ] 정규 표현식 사용하기 (0) | 2024.07.10 |
[ Python ] str과 repr 의 차이에 대해서 알아보기 (0) | 2024.07.10 |