[Python] 讓正規表示的dot去match換行(newline)

今天做資料截取的時候遇到的一個小問題,這裡記錄一下解決的方法

今天我有一個文字檔內容如下

###START###
Hello.
I'm happy
###END###

我希望截取###START###跟###END###中間的內容,很自然的就選用了正規表示來做這問題

import re
v = """
###START###
Hello.
I'm happy
###END###
"""
m = re.search(r"###START###\n(.*?)\n###END###", v)
print m.group(1) #FAILURE

卻是什麼也找不到,後來看了一下文檔,python的正規表示的dot在預設是不會去match換行(\n)
必須加上re.DOTALL這個flag才能讓dot去match newline

import re
v = """
###START###
Hello.
I'm happy
###END###
"""
m = re.search(r"###START###\n(.*?)\n###END###", v, re.DOTALL)
print m.group(1) #SUCCESS
comments powered by Disqus