정규식은 Python에만 고유한 것이 아니라 많은 프로그래밍 언어에서 지원되는 독립적인 구문 집합입니다. 다른 언어에서 사용되는 정규식 구문은 완전히 동일하지는 않지만 일반적으로 유사합니다. 이 글은 그리디 모드와 비그리디 모드의 사용법과 차이점에 초점을 맞췄습니다. 기본적으로 정규식은 그리디 모드에 따라 일치합니다. 즉, 가능한 한 많은 콘텐츠를 일치시킵니다. 예:
위 코드에서 정규식의 첫 번째 b는 단어의 시작 부분과 일치하고 그 뒤에 문자 b가 옵니다. 이는 문자 b로 시작하는 단어와 그 뒤에 점이 오는 일치를 의미합니다. . 모든 문자(공백 포함)와 일치합니다. 더하기 기호 +는 이전 문자가 한 번 이상 나타나는 것을 의미하고 마지막 b는 단어의 끝과 일치함을 의미합니다. 그래서 질문은 단어의 끝으로 간주되는 것은 무엇입니까? 공백 문자와 구두점은 모두 단어 끝으로 계산되지만 정규 표현식은 기본적으로 탐욕 모드를 사용하여 가능한 한 많은 내용을 일치시키므로 위 코드는 텍스트의 마지막 단어 끝과 일치합니다. 그림에 표시된 대로:
그렇다면 위와 같이 문자 b로 시작하는 단어만 일치시킬 수 있는 방법은 무엇일까요? Non-greedy 모드를 사용할 수 있습니다. 비 욕심 모드는 물음표 "?"를 사용하여 완성됩니다. 정규식에서 물음표 앞에 일반 문자나 하위 패턴이 있으면 물음표 앞의 문자나 하위 패턴이 또는 나타나지 않을 수 있습니다. 그러나 +, *, {m,n} 등의 내용 뒤에 물음표가 붙는다면 비탐욕 모드, 즉 가능한 한 적은 내용과 일치함을 나타냅니다. 위의 문제를 예로 들어 non-greedy 모드로 변경합니다. 예:
다음 코드는 Greedy 모드와 Non-greedy 모드의 차이점을 추가로 보여줍니다.
물론입니다. , 이 글의 시작 부분으로 돌아가서 단지 문자 b로 시작하는 단어를 일치시키려면 그렇게 많은 어려움을 겪을 필요가 없습니다. w는 문자, 숫자 또는 밑줄만 일치시킬 수 있기 때문입니다. 공백이 아닙니다. 예:
관련 권장 사항:
파이썬의 정규식에서 탐욕 알고리즘과 비탐욕 알고리즘의 적용
위 내용은 Python 정규식에서 탐욕 모드와 비 탐욕 모드의 사용법과 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!