Python Non-Greedy 정규 표현식
정규 표현식을 처리할 때 표준 * 연산자는 탐욕적입니다. 즉, 최대한 일치하려고 시도합니다. 가능한 한 입력의 그러나 탐욕스럽지 않은 접근 방식이 필요한 시나리오가 있습니다. 이 기사에서는 Python에서 탐욕스럽지 않은 정규식을 사용하는 방법을 살펴보며, 특히 원치 않는 문자를 포함하지 않고 특정 하위 문자열을 일치시키는 것이 목표인 경우에 중점을 둡니다.
문제
다음 입력 문자열을 고려하세요: "a (b) c (d) e"
표준 그리디 정규식 "(.)"를 사용하면 Python은 "b) c (d)와 일치합니다. ". 는 앞의 표현을 0번 이상으로 수량화하는데, 욕심 많은 행동이 최대한 일치하도록 유도하기 때문입니다.
해결책
정규식을 탐욕스럽지 않게 만들려면 ? 한정자를 사용하세요. 이렇게 하면 Python이 표현식을 가능한 한 적게 일치시켜 "(.?)"가 "b"만 일치하게 됩니다.
Python 구현
import re input_string = "a (b) c (d) e" non_greedy_regex = r"(.*?)" match = re.search(non_greedy_regex, input_string) if match: print(match.group(1))
출력:
b
결론
*? Python에서 정규 표현식의 동작을 제어하는 편리하고 간결한 방법을 제공합니다. 일치 항목을 최대한 짧게 지정하면 원하지 않는 문자를 실수로 포함하지 않고 원하는 하위 문자열을 정확하게 지정할 수 있습니다.
위 내용은 Python에서 탐욕스럽지 않은 정규식을 사용하여 원치 않는 문자를 포함하지 않고 특정 하위 문자열을 일치시키려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!