> 백엔드 개발 > 파이썬 튜토리얼 > Python Regexes에서 Compact Non-Greedy 일치를 어떻게 달성할 수 있습니까?

Python Regexes에서 Compact Non-Greedy 일치를 어떻게 달성할 수 있습니까?

Susan Sarandon
풀어 주다: 2024-11-09 03:05:02
원래의
538명이 탐색했습니다.

How Can I Achieve Compact Non-Greedy Matching in Python Regexes?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿