Python Regexes의 Compact Non-Greedy 일치
문자열에서 가능한 가장 작은 부분을 캡처하는 정규식 일치의 필요성을 고려하세요. 최대 부분 문자열을 캡처하는 Python의 기본 그리디 접근 방식을 어떻게 수정할 수 있습니까?
해결책은 비탐욕 일치 연산자 ?에 있습니다. 이 연산자는 Python에 다음을 캡처하도록 지시합니다. 가능한 최소한의 텍스트 양. 그 다양성을 설명하기 위해 문자열 "a (b) c (d) e"에 적용된 정규식 "(.)"을 고려해 보십시오. 일반적으로 전체 중첩 표현식을 포함하는 "b) c (d"를 캡처합니다.
그러나 탐욕스럽지 않은 한정자 ?를 사용하면 수정된 정규식 "(.?) " 대신 원하는 "b"를 캡처합니다. 이는 ?*가 Python에 가능한 한 적은 텍스트를 일치하도록 지시하여 더 큰 그룹으로 확장하기보다는 "b"의 즉각적인 일치에 우선순위를 두기 때문입니다.
Greedy와 Non-Greedy에 대한 공식 Python 문서에는 non-greedy 한정자는 "가능한 한 적은 텍스트와 일치"한다고 명시되어 있습니다. 따라서 최적의 간결한 부분 문자열을 캡처해야 하는 딜레마에 직면했을 때 non-greedy 연산자는 ?* 간결하고 효율적인 정규 표현식을 가능하게 하는 최고의 솔루션으로 등장합니다.
위 내용은 Python Regexes에서 Compact Non-Greedy 일치를 어떻게 달성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!