반응형
파이썬 정규 표현식에서 전방 탐색(Lookahead)은 특정 패턴이 특정 부분 문자열 앞에 있는지를 확인하지만, 그 부분 문자열을 소비(consumption)하지 않는 기능입니다. 이는 문자열의 매칭을 특정 조건에 따라 제한할 때 매우 유용합니다. 전방 탐색은 긍정 전방 탐색(positive lookahead)과 부정 전방 탐색(negative lookahead)으로 나뉩니다.
1. 긍정 전방 탐색 (Positive Lookahead)
긍정 전방 탐색은 특정 패턴이 뒤따르는 경우에만 매칭을 허용합니다. 구문은 (?=...)
입니다.
예제:
- 패턴
A(?=B)
는B
가 뒤따르는A
를 매칭합니다. 하지만B
는 매칭 결과에 포함되지 않습니다.
2. 부정 전방 탐색 (Negative Lookahead)
부정 전방 탐색은 특정 패턴이 뒤따르지 않는 경우에만 매칭을 허용합니다. 구문은 (?!=...)
또는 (?!...)
입니다.
예제:
- 패턴
A(?!B)
는B
가 뒤따르지 않는A
를 매칭합니다.
3. 예제
다음은 전방 탐색의 예제입니다.
import re
text = "apple, banana, cherry, date"
# 긍정 전방 탐색
positive_lookahead_pattern = re.compile(r'\w+(?=,)')
positive_matches = positive_lookahead_pattern.findall(text)
# 부정 전방 탐색
negative_lookahead_pattern = re.compile(r'\w+\b(?!,)')
negative_matches = negative_lookahead_pattern.findall(text)
print("Positive Lookahead Matches:")
print(positive_matches) # ['apple', 'banana', 'cherry']
print("\nNegative Lookahead Matches:")
print(negative_matches) # ['date']
4. 설명
- 긍정 전방 탐색:
- 패턴
\w+(?=,)
는 단어 문자(알파벳 또는 숫자)가 하나 이상 있고, 그 뒤에 쉼표,
가 뒤따르는 경우에 매칭됩니다. 따라서apple
,banana
,cherry
가 매칭됩니다. - 쉼표는 매칭 결과에 포함되지 않습니다.
- 패턴
- 부정 전방 탐색:
- 패턴
\w+\b(?!,)
는 단어 문자(알파벳 또는 숫자)가 하나 이상 있고, 그 뒤에 쉼표,
가 뒤따르지 않는 경우에 매칭됩니다. 따라서date
가 매칭됩니다. - 이 경우 쉼표가 없는 단어를 찾습니다.
- 패턴
이 예제들은 전방 탐색의 긍정과 부정 조건을 활용하여 원하는 패턴을 매칭하는 방법을 보여줍니다. 전방 탐색은 특정 패턴이 존재하는지 여부를 확인할 수 있지만, 그 패턴 자체는 소비하지 않기 때문에 매우 강력한 도구입니다.
반응형
'언어 > Python' 카테고리의 다른 글
[ 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 |
[ Python ] re.sub()를 사용해서 텍스트 교체하기 (2) | 2024.07.22 |