파 이 썬 의 최 단 일치 모드 를 자세히 설명 합 니 다.
정규 표현 식 으로 텍스트 모드 를 일치 시 키 려 고 시도 하고 있 지만,패턴 의 최 장 일치 가능성 을 찾 았 습 니 다.가장 짧 은 검색 이 일치 할 수 있 도록 수정 하고 싶 습 니 다.
해결 방안
이 문 제 는 일반적으로 구분자 사이 의 텍스트 와 일치 해 야 할 때(예 를 들 어 따옴표 에 포 함 된 문자열)에 나타난다.명확 하 게 설명 하기 위해 다음 과 같은 예 를 고려 합 니 다.
>>> str_pat = re.compile(r'"(.*)"')
>>> text1 = 'Computer says "no."'
>>> str_pat.findall(text1)
['no.']
>>> text2 = 'Computer says "no." Phone says "yes."'
>>> str_pat.findall(text2)
['no." Phone says "yes.']
>>>
이 예 에서 모드 r'\'(.*)\'의 의 도 는 작은 따옴표 에 포 함 된 텍스트 와 일치 하 는 것 입 니 다.그러나 정규 표현 식 에서*조작 자 는 욕심 이 많 기 때문에 일치 하 는 동작 은 가장 긴 일치 할 수 있 는 것 을 찾 습 니 다.그래서 두 번 째 예 에서 text 2 를 검색 할 때 결 과 를 되 돌려 주 는 것 은 우리 가 원 하 는 것 이 아니다.이 문 제 를 수정 하기 위해 서 모드 의*연산 자 뒤에 추가 할 수 있 습 니까?장식 부적,이렇게:
>>> str_pat = re.compile(r'"(.*?)"')
>>> str_pat.findall(text2)
['no.', 'yes.']
>>>
이렇게 하면 매 칭 을 비 탐욕 모델 로 만 들 고 가장 짧 은 매 칭,즉 우리 가 원 하 는 결 과 를 얻 을 수 있다.토론 하 다.
이 절 은 점(.)문 자 를 포함 하 는 정규 표현 식 을 쓸 때 흔히 볼 수 있 는 문 제 를 보 여 줍 니 다.패턴 문자열 에서 점(.)은 줄 을 바 꾸 는 것 을 제외 한 모든 문자 와 일치 합 니 다.그러나 점(.)번 호 를 시작 과 끝 문자(예 를 들 어 따옴표)사이 에 두 면 일치 하 는 동작 은 패턴 에 맞 는 최 장 일치 할 수 있 습 니 다.이 로 인해 끝 문자 에 포 함 된 텍스트 를 무시 하고 일치 하 는 결과 문자열 에 포함 되 어 되 돌아 오 는 경우 가 많 습 니 다.*또는+와 같은 연산 자 뒤에 하 나 를 추가 하 시 겠 습 니까?일치 알고리즘 을 가장 짧 은 일치 가능성 을 찾 는 것 으로 강제 할 수 있 습 니 다.
이상 은 Python 의 최 단 일치 모델 에 대한 상세 한 내용 입 니 다.Python 의 최 단 일치 모델 에 대한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.