반응형
파이썬 정규표현식에서 expr??
, expr*?
, expr+?
의 차이는 패턴의 매칭 방식과 반복 횟수에 관련된 non-greedy
매칭을 제어하는 방법입니다. 아래는 각 표현식의 설명과 예제입니다.
1. 설명
expr??
:expr?
는expr
이 0번 또는 1번 나타나는 경우를 매칭합니다.expr??
는 가능한 한 적게 매칭하려고 시도합니다. 즉,expr
이 있으면 0번 나타나는 경우를 우선적으로 매칭합니다.
expr*?
:expr*
는expr
이 0번 이상 나타나는 경우를 매칭합니다.expr*?
는 가능한 한 적게 매칭하려고 시도합니다. 즉,expr
이 없는 경우를 우선적으로 매칭합니다.
expr+?
:expr+
는expr
이 1번 이상 나타나는 경우를 매칭합니다.expr+?
는 가능한 한 적게 매칭하려고 시도합니다. 즉,expr
이 1번 나타나는 경우를 우선적으로 매칭합니다.
2. 예제
다음 예제들은 각각의 non-greedy
패턴이 어떻게 동작하는지를 보여줍니다.
import re
text = "abbbbc"
# expr??
pattern1 = re.compile(r'ab??')
match1 = pattern1.search(text)
# expr*?
pattern2 = re.compile(r'ab*?')
match2 = pattern2.search(text)
# expr+?
pattern3 = re.compile(r'ab+?')
match3 = pattern3.search(text)
print("Pattern expr??:")
print(match1.group()) # a
print("\nPattern expr*?:")
print(match2.group()) # a
print("\nPattern expr+?:")
print(match3.group()) # ab
3. 설명
ab??
:- 가능한 한 적게 매칭하므로,
a
만 매칭됩니다.b
는 0번 나타나는 경우를 우선 매칭합니다.
- 가능한 한 적게 매칭하므로,
ab*?
:- 가능한 한 적게 매칭하므로,
a
만 매칭됩니다.b*
는 0번 나타나는 경우를 우선 매칭합니다.
- 가능한 한 적게 매칭하므로,
ab+?
:- 가능한 한 적게 매칭하므로,
ab
가 매칭됩니다.b+
는 최소 1번 나타나야 하므로ab
가 매칭됩니다.
- 가능한 한 적게 매칭하므로,
이 예제들은 non-greedy
패턴이 어떻게 동작하는지와 매칭 결과를 보여줍니다. non-greedy
패턴은 greedy
패턴과 반대로 가능한 최소한의 반복을 시도합니다.
반응형
'언어 > Python' 카테고리의 다른 글
[ Python ] 정규표현식에서 다중 패턴으로 전방 탐색하기 (0) | 2024.07.27 |
---|---|
[ Python ] 정규 표현식에서 전방 탐색 기능에 대해서 알아보기 (0) | 2024.07.27 |
[ Python ] match() 사용시 Greedy vs Non-Greedy 설명과 예제 (0) | 2024.07.27 |
[ Python ] re.sub()를 사용해서 텍스트 교체하기 (2) | 2024.07.22 |
[ Python ] 글 작성시 흔히 하는 실수를 정규 표현식으로 찾기 (2) | 2024.07.21 |