我正在尝试使用正则表达式从SQL导出文件转储数据。要匹配帖子内容的字段,我使用“(?P<content>.*?)
”。它在大多数情况下工作正常,但如果字段包含'\ n'字符串,则正则表达式将不匹配。如何修改正则表达式以匹配它们?谢谢!
示例(我正在使用Python):
>>> re.findall("'(?P<content>.*?)'","'<p>something, something else</p>'")
['<p>something, something else</p>']
>>> re.findall("'(?P<content>.*?)'","'<p>something, \n something else</p>'")
[]
P.S。看起来前面带有'\'的所有字符串都被视为转义字符。我如何告诉regx按原样对待他们?
答案 0 :(得分:24)
您应该使用DOTALL
选项:
>>> re.findall("'(?P<content>.*?)'","'<p>something, \n something else</p>'", re.DOTALL)
['<p>something, \n something else</p>']
请参阅this。
答案 1 :(得分:3)
您需要Dotall修改器,以使点也匹配换行符。
re.S
re.DOTALL
制作'。'特殊字符匹配任何字符 所有,包括换行;没有这个标志,'。'会匹配任何东西 除了换行符。