> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 정규식을 사용하여 여러 줄의 텍스트 블록을 캡처하는 방법은 무엇입니까?

Python에서 정규식을 사용하여 여러 줄의 텍스트 블록을 캡처하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-10-25 04:34:02
원래의
1016명이 탐색했습니다.

How to Capture Multiline Text Blocks with Regular Expressions in Python?

여러 줄 텍스트 블록 일치를 위한 정규 표현식

Python에서는 여러 줄에 걸쳐 텍스트를 일치시키는 것이 어려울 수 있습니다. 이 기사는 여러 줄 블록 및 관련 줄 그룹을 캡처하는 간결한 솔루션을 제공합니다.

다음 텍스트 형식을 고려하세요.

some Varying TEXT

DSJFKDAFJKDAFJDSAKFJADSFLKDLAFKDSAF
[more of the above, ending with a newline]
[yep, there is a variable number of lines here]

(repeat the above a few hundred times).
로그인 후 복사

목표는 두 그룹, 즉 "일부 다양한 텍스트"를 캡처하는 것입니다. " 줄과 그 이후의 대문자 줄(줄바꿈 없음)은 하나의 캡처 그룹에 포함됩니다.

Lösungsansatz

re.compile(r"^(.+)\n((?:\n.+)+)", re.MULTILINE)
로그인 후 복사

Erläuterung

  • ^: 새 줄의 시작과 일치합니다.
  • .: 새 줄을 제외한 모든 문자와 일치합니다.
  • : 하나 이상의 반복과 일치합니다.
  • n: 개행 문자와 일치합니다.
  • (?:...) : 줄 내에서 여러 패턴이 일치하는 비캡처 그룹을 생성합니다.
  • () 캡처 그룹은 두 부분을 묶습니다.

Beispiel

text = "some Varying TEXT\nDSJFKDAFJKDAFJDSAKFJADSFLKDLAFKDSAF\n[more of the above]\n[yep, there is a newline]\n(repeat the above)."
match = re.match(r"^(.+)\n((?:\n.+)+)", text, re.MULTILINE)
print(match.group(1))  # "some Varying Text"
print(match.group(2))  # "DSJFKDAFJKDAFJDSAKFJADSFLKDLAFKDSAF\n[more of the above]\n[yep, there is a newline]"
로그인 후 복사

이 접근 방식은 Python의 re 모듈과 MULTILINE 옵션을 활용하여 여러 줄 일치를 활성화하고 앵커링 문제를 방지합니다.

위 내용은 Python에서 정규식을 사용하여 여러 줄의 텍스트 블록을 캡처하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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