반응형
부정 전방 탐색(Negative Lookahead)은 정규 표현식에서 특정 패턴이 뒤따르지 않는 경우에만 매칭을 허용하는 기능입니다. 부정 전방 탐색의 구문은 (?!...)
또는 (?!=...)
입니다. 이 기능을 사용하면 특정 조건을 만족하지 않는 패턴을 매칭할 수 있습니다.
1. 부정 전방 탐색의 사용법
부정 전방 탐색을 사용하면 특정 패턴이 문자열 뒤에 오지 않는 경우에만 매칭이 가능합니다. 이 패턴은 실제 매칭에 포함되지 않으므로 패턴 자체는 소비되지 않습니다.
2. 예제
다음 예제는 부정 전방 탐색을 사용하여 "apple"이 뒤따르지 않는 단어를 찾는 방법을 보여줍니다.
import re
text = "I have an apple pie and a banana split. I also have a cherry tart."
# 부정 전방 탐색 패턴
pattern = re.compile(r'\b\w+\b(?!\sapple)')
matches = pattern.findall(text)
print("Matches with Negative Lookahead:")
print(matches) # ['I', 'have', 'an', 'pie', 'and', 'a', 'banana', 'split.', 'I', 'also', 'have', 'a', 'cherry', 'tart.']
3. 설명
- 패턴
\b\w+\b(?!\sapple)
는 다음과 같이 해석됩니다:\b
는 단어 경계를 의미합니다.\w+
는 하나 이상의 단어 문자를 매칭합니다.\b
는 단어 경계를 의미합니다.(?!\sapple)
는 뒤에 공백(\s
)과 "apple"이 오지 않는 경우에만 매칭을 허용합니다.
이 예제에서는 "apple"이 뒤따르지 않는 모든 단어를 찾습니다.
4. 또 다른 예제
다음 예제는 "pie" 또는 "split"이 뒤따르지 않는 단어를 찾는 부정 전방 탐색의 예제입니다.
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(?:pie|split))')
matches_neg = pattern_neg.findall(text)
print("Matches with Negative Lookahead for Multiple Patterns:")
print(matches_neg) # ['I', 'have', 'an', 'apple', 'and', 'a', 'banana', 'I', 'also', 'have', 'a', 'cherry', 'tart.']
5. 설명
- 패턴
\b\w+\b(?!\s(?:pie|split))
는 다음과 같이 해석됩니다:\b
는 단어 경계를 의미합니다.\w+
는 하나 이상의 단어 문자를 매칭합니다.\b
는 단어 경계를 의미합니다.(?!\s(?:pie|split))
는 뒤에 공백(\s
)과 "pie" 또는 "split"이 오지 않는 경우에만 매칭을 허용합니다.
이 예제에서는 "pie" 또는 "split"이 뒤따르지 않는 모든 단어를 찾습니다.
부정 전방 탐색을 사용하면 특정 조건을 만족하지 않는 패턴을 효과적으로 찾아낼 수 있으며, 이를 통해 복잡한 문자열 매칭을 쉽게 구현할 수 있습니다.
반응형
'언어 > Python' 카테고리의 다른 글
[ Python ] re.split() 사용하기 (0) | 2024.08.02 |
---|---|
[ Python ] 정규식에서 패턴 매칭 후 인덱스로 결과에 접근하기 (0) | 2024.08.01 |
[ Python ] 정규표현식에서 다중 패턴으로 전방 탐색하기 (0) | 2024.07.27 |
[ Python ] 정규 표현식에서 전방 탐색 기능에 대해서 알아보기 (0) | 2024.07.27 |
[ Python ] match() 에서 표현식 (?? vs *? vs +?) 설명과 예제 (0) | 2024.07.27 |