[PYTHON] Python 정규식, 여러 줄에 걸쳐 패턴 일치. 왜이 코드가 작동하지 않습니까?
PYTHONPython 정규식, 여러 줄에 걸쳐 패턴 일치. 왜이 코드가 작동하지 않습니까?
나는 구문 분석을 위해 모든 공간과 줄 바꿈을 이상적으로 제거해야한다는 것을 알고 있지만, 필자가 시도한 것에 대한 빠른 수정으로이 작업을 수행하고 있었고 작동하지 않는 이유를 알아 내지 못했습니다. 텍스트의 여러 영역을 "#### 1"과 같은 래퍼가있는 문서와이 구문을 기반으로 구문을 분석하려고합니다. 그러나 아무리 노력해도 작동하지 않습니다. 여러 줄을 올바르게 사용하고 있다고 생각합니다. 조언을 보내 주시면 감사하겠습니다.
결과가 전혀 반환되지 않습니다.
string='
####1
ttteest
####1
ttttteeeestt
####2
ttest
####2'
import re
pattern = '.*?####(.*?)####'
returnmatch = re.compile(pattern, re.MULTILINE).findall(string)
return returnmatch
해결법
-
==============================
1.re.findall (r "#### (. *?) \ s (. *?) \ s ####", string, re.DOTALL)을 사용해보십시오. 물론 re.compile에서도 작동합니다.
re.findall (r "#### (. *?) \ s (. *?) \ s ####", string, re.DOTALL)을 사용해보십시오. 물론 re.compile에서도 작동합니다.
이 정규 표현식은 섹션 번호와 섹션 내용이 포함 된 튜플을 반환합니다.
예를 들어, [( '1', 'ttteest'), ( '2', '\ n \ nttest')]를 반환합니다.
(예 : 귀하의 예제가 실행되지 않습니다, 여러 줄 문자열에 대해 '' '또는 ""사용)
-
==============================
2.다중 행은 의미하지 않습니다. 줄 반환과 일치합니다, 그것은 ^와 $가 줄에만 제한된다는 것을 의미합니다
다중 행은 의미하지 않습니다. 줄 반환과 일치합니다, 그것은 ^와 $가 줄에만 제한된다는 것을 의미합니다
re.SOT 또는 re.DOTALL이됩니다. 새로운 라인까지 일치시킵니다.
출처
http://docs.python.org/
from https://stackoverflow.com/questions/3534507/python-regex-matching-pattern-over-multiple-lines-why-isnt-this-working by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파일에서 읽은 목록의 줄 바꿈 문자 제거 [duplicate] (0) | 2018.11.20 |
---|---|
[PYTHON] 대소 문자 무시 문자열에서 부분 문자열을 일치시키는 방법은 무엇입니까? (0) | 2018.11.20 |
[PYTHON] 가치에 기반한 팬더 조회 (0) | 2018.11.20 |
[PYTHON] 어떻게 데이터 프레임 인덱스를 배열로 가져 옵니까? (0) | 2018.11.20 |
[PYTHON] __future__에서 사용하는 방법 import print_function [닫힘] (0) | 2018.11.20 |