'\ n'이 여러 개인 문자열에서 하위 문자열 찾기 [중복]
Nov 17 2020
내 목표는 search_term_start와 search_term_end 사이의 텍스트를 찾는 것입니다. 내가 가진 문제는 '\ n'문자가없는 문자열을 사용하는 경우에만이 작업을 수행 할 수 있다는 것입니다. 아래 코드는 AttributeError를 발생시킵니다.
import re
logs = 'cut-this-out \n\n givemethisstring \n\n and-this-out-too'
search_term_start = '''cut-this-out'''
search_term_end = '''and-this-out-too'''
total_pages = re.search(search_term_start + '(.*)' + search_term_end, logs)
print(total_pages.group(1))
로그에서 '\ n'문자를 제거하면 프로그램이 의도 한대로 실행됩니다.
import re
logs = 'cut-this-out givemethisstring and-this-out-too'
search_term_start = '''cut-this-out'''
search_term_end = '''and-this-out-too'''
total_pages = re.search(search_term_start + '(.*)' + search_term_end, logs)
print(total_pages.group(1))
문자열에 '\ n'문자가 있으면 하위 문자열을 검색 할 수 없습니다. 이 하위 문자열을 검색하고 원래 문자열에서 '\ n'을 제거하지 않고 저장할 수 있습니까?
답변
1 SorousHBakhtiary Nov 17 2020 at 15:50
re.DOTALL은 정확히 당신이 찾고있는 깃발입니다.
'.' 특수 문자는 개행 문자를 포함하여 모든 문자와 일치합니다. 이 플래그가 없으면 '.' 개행을 제외한 모든 항목과 일치합니다. 인라인 플래그 (? s)에 해당합니다.
이 시도:
import re
logs = 'cut-this-out \n\n givemethisstring \n\n and-this-out-too'
search_term_start = '''cut-this-out'''
search_term_end = '''and-this-out-too'''
c = re.compile(search_term_start + r'(.*)' + search_term_end, re.DOTALL)
print(c.search(logs).group(1))