Python 다 중 줄 일치 모드 분석

문제.
큰 텍스트 와 일치 하 는 정규 표현 식 을 사용 하려 고 시도 하고 있 습 니 다.여러 줄 을 넘 어 일치 해 야 합 니 다.
해결 방안
이 문 제 는 점(.)으로 임의의 문자 와 일치 할 때 점(.)이 줄 바 꿈 문자 와 일치 하지 않 는 다 는 사실 을 잊 어 버 린 것 이 전형 적 이다.예 를 들 어 C 언어 분할 에 맞 는 설명 을 시도 하고 싶다 고 가정 하 십시오.

>>> comment = re.compile(r'/\*(.*?)\*/')
>>> text1 = '/* this is a comment */'
>>> text2 = '''/* this is a
... multiline comment */
... '''
>>>
>>> comment.findall(text1)
[' this is a comment ']
>>> comment.findall(text2)
[]
>>>
이 문 제 를 수정 하기 위해 서 는 패턴 문자열 을 수정 하고 줄 바 꾸 기 지원 을 추가 할 수 있 습 니 다.예 를 들 면:

>>> comment = re.compile(r'/\*((?:.|
)*?)\*/') >>> comment.findall(text2) [' this is a
multiline comment '] >>>
이 모드 에서(?:.|)비 포획 그룹 을 지정 하 였 습 니 다.
토론 하 다.re.compile()함수 가 표지 파 라 메 터 를 받 아들 이 는 것 은 re.DOTALL 이 고 여기 서 매우 유용 합 니 다.정규 표현 식 의.줄 바 꿈 자 를 포함 한 임의의 문자 와 일치 합 니 다.예 를 들 면:

>>> comment = re.compile(r'/\*(.*?)\*/', re.DOTALL)
>>> comment.findall(text2)
[' this is a
multiline comment ']
간단 한 경우 re.DOTALL 태그 파 라 메 터 를 사용 하 는 것 이 좋 습 니 다.그러나 패턴 이 매우 복잡 하거나 문자열 토 큰 을 구성 하기 위해 여러 모델 을 합 친 경우(2.18 절 에 상세 한 설명 이 있 음)이 태그 파 라 메 터 를 사용 하면 질문 이 나 올 수 있 습 니 다.선택 하 라 고 하면 정규 표현 식 모드 를 정의 하 는 것 이 좋 습 니 다.추가 적 인 태그 매개 변수 없 이도 잘 작 동 할 수 있 습 니 다.
이상 은 Python 다 중 줄 일치 모델 에 대한 상세 한 내용 입 니 다.Python 다 중 줄 일치 모델 에 대한 자 료 는 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기