정규 표현식을 사용하여 여러 줄 블록 일치
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).
목표는 두 가지 구성 요소를 캡처하는 것입니다.
여러 접근 방식이 시도되었지만 실패했습니다.
re.compile(r"^>(\w )$$(\n[.$] )^$", re.MULTILINE) # Capture both parts
re.compile(r"([^>][\w\s] )$", re.MULTILINE|re.DOTALL) # Just textlines
이 문제를 해결하려면 다음 정규 표현식을 활용하세요.
re.compile(r"^(. )\n((?:\n. ) )", re.MULTILINE)
"^" 및 "$"는 줄 바꿈과 일치하지 않습니다. 따라서 여러 줄 모드에서는 "^"가 줄 바꿈 뒤에오고 "$"가 줄 바꿈 앞에 옵니다.
또한 다양한 줄 바꿈 형식에 유의하세요. 줄 바꿈, 캐리지 리턴 또는 둘 다를 포함할 수 있는 텍스트의 경우 다음과 같은 보다 포괄적인 정규식을 사용하십시오.
re.compile(r"^(. )(?:\n|\r\n?)((?:(?:\n|\r\n?). ) )", re.MULTILINE)
점이 이미 줄 바꿈을 제외하기 때문에 DOTALL 수정자는 여기에서 필요하지 않습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3