我一直试图对此进行调试一段时间,但我似乎没有取得任何进展。
为什么下面的正则表达式与提供的文字不匹配?
正则表达式:
'^(.*)============== TT ==============(.*)=================================================='
文本:
'fasdfdsfadf\ndfassdflj\n============== TT ==============\nPlease add.\n=================================================='
re.search(x, editor_text)
将返回None
根据我的理解,正则表达式会返回第一段文本(.*)
然后查找分隔符(===)并查找文本的第二段(.*)
并完成分隔符。
为什么正则表达式不提取
fasdfdsfadf\ndfassdflj\n
和
\nPlease add.\n
答案 0 :(得分:4)
您需要使用s
( dotall )修饰符来强制点匹配换行符序列。
将其用作inline修饰符:
(?s)(.*)============== TT ==============(.*)==================================================
注意:您可以按如下方式简化正则表达式:
(?s)(.*)={14} TT ={14}(.*)={50}
或在re.search()
:
re.search(x, editor_text, re.S)
答案 1 :(得分:1)
您还可以使用re.DOTALL
标记来匹配换行符:
re.search(x, editor_text, re.DOTALL)