Regex를 사용하여 Python에서 두 문자열 사이의 최단 일치 항목을 추출하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-10-24 02:56:29
원래의
349명이 탐색했습니다.

How to Extract Shortest Matches Between Two Strings in Python with Regex?

두 문자열 사이의 최단 일치 항목 추출

대용량 로그 파일을 처리할 때 두 문자열 사이의 특정 데이터를 추출하는 것이 어려울 수 있습니다. 파일 전체에서 시작 및 끝 문자열이 여러 번 발생하고 원하는 출력에 가장 짧은 일치 항목이 포함되면 작업이 더 복잡해집니다.

정규식 솔루션

이 문제를 해결하려면 , 정규식 접근 방식을 사용할 수 있습니다. 이상적인 정규 표현식은 시작 문자열과 끝 문자열 사이의 텍스트를 캡처하고 가장 짧은 일치 항목의 우선 순위를 지정합니다.

제공된 정규 표현식(start((?!start).)*?end)는 다음 기준을 충족합니다.

  • start는 시작 문자열과 정확하게 일치합니다.
  • ((?!start).)*? 게으른 수량자 *?를 사용하여 반복적으로 시작하는 문자를 제외한 모든 문자와 일치합니다. 가장 짧은 일치의 우선순위를 정합니다.
  • end는 끝 문자열과 정확히 일치합니다.

Python을 사용한 구현

Python에서 re 모듈은 다음을 제공합니다. 이 정규식을 적용하는 데 필요한 기능입니다. 아래 코드는 re.findall을 사용하여 가장 짧은 일치 항목을 추출하는 방법을 보여줍니다.

<code class="python">import re

text = "start spam\nstart rubbish\nstart wait for it...\n    profit!\nhere end\nstart garbage\nstart second match\nwin. end"

matches = re.findall('(start((?!start).)*?end)', text, re.S)

for match in matches:
    print(match)</code>
로그인 후 복사

출력:

start wait for it...
    profit!
here end
start second match
win. end
로그인 후 복사

대형 파일에 대한 추가 고려 사항

매우 큰 파일(예: 2GB)의 경우 효율성이 중요합니다. 다음 최적화를 적용할 수 있습니다.

  • 버퍼 기반 접근 방식을 활용하여 전체 파일을 메모리로 읽는 것을 방지합니다.
  • re.MULTILINE과 같은 정규식 엔진 플래그를 사용하여 다중 파일을 처리합니다. 라인 입력.

위 내용은 Regex를 사용하여 Python에서 두 문자열 사이의 최단 일치 항목을 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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