반응형
파이썬 정규표현식에서 전방 탐색 기능을 사용하여 다중 패턴을 검색할 수 있습니다. 이를 통해 여러 조건을 동시에 만족하는 문자열을 찾을 수 있습니다. 전방 탐색을 여러 번 사용하면 다중 조건을 적용할 수 있습니다.
1. 예제
다음 예제는 전방 탐색을 사용하여 문자열에서 "apple" 또는 "banana"가 뒤따르는 단어를 찾는 방법을 보여줍니다.
import re
text = "I have an apple pie and a banana split. I also have a cherry tart."
# 긍정 전방 탐색을 사용한 다중 패턴 검색
pattern = re.compile(r'\b\w+(?=\s(?:apple|banana))')
matches = pattern.findall(text)
print("Matches with Positive Lookahead for Multiple Patterns:")
print(matches) # ['an', 'a']
2. 설명
- 패턴
\b\w+(?=\s(?:apple|banana))
는 다음과 같이 해석됩니다:\b
는 단어 경계를 의미합니다.\w+
는 하나 이상의 단어 문자를 매칭합니다.(?=\s(?:apple|banana))
는 뒤에 공백(\s
)과 "apple" 또는 "banana"가 오는 경우에 매칭을 허용합니다.(?:apple|banana)
는 non-capturing group으로 "apple" 또는 "banana" 중 하나를 매칭합니다.
이 예제에서는 "apple" 또는 "banana" 앞에 있는 단어를 찾습니다.
3. 추가 예제
다음 예제는 "apple" 또는 "banana"가 뒤따르지 않는 단어를 찾는 부정 전방 탐색의 예제입니다.
import re
text = "I have an apple pie and a banana split. I also have a cherry tart."
# 부정 전방 탐색을 사용한 다중 패턴 검색
pattern_neg = re.compile(r'\b\w+\b(?!\s(?:apple|banana))')
matches_neg = pattern_neg.findall(text)
print("Matches with Negative Lookahead for Multiple Patterns:")
print(matches_neg) # ['I', 'have', 'pie', 'and', 'split.', 'I', 'also', 'have', 'cherry', 'tart.']
4. 설명
- 패턴
\b\w+\b(?!\s(?:apple|banana))
는 다음과 같이 해석됩니다:\b
는 단어 경계를 의미합니다.\w+
는 하나 이상의 단어 문자를 매칭합니다.\b
는 단어 경계를 의미합니다.(?!\s(?:apple|banana))
는 뒤에 공백(\s
)과 "apple" 또는 "banana"가 오지 않는 경우에 매칭을 허용합니다.
이 예제에서는 "apple" 또는 "banana" 앞에 오지 않는 단어를 찾습니다.
이와 같이 전방 탐색 기능을 사용하여 다중 패턴을 검색할 수 있으며, 긍정 전방 탐색과 부정 전방 탐색을 적절히 조합하여 복잡한 검색 조건을 구현할 수 있습니다.
반응형
'언어 > Python' 카테고리의 다른 글
[ Python ] 정규식에서 패턴 매칭 후 인덱스로 결과에 접근하기 (0) | 2024.08.01 |
---|---|
[ Python ] 정규표현식에서 부정적 전방 탐색 사용하기 (0) | 2024.07.27 |
[ Python ] 정규 표현식에서 전방 탐색 기능에 대해서 알아보기 (0) | 2024.07.27 |
[ Python ] match() 에서 표현식 (?? vs *? vs +?) 설명과 예제 (0) | 2024.07.27 |
[ Python ] match() 사용시 Greedy vs Non-Greedy 설명과 예제 (0) | 2024.07.27 |