正则表达式:如何匹配包含“\ n”(换行符)的字符串?

时间:2011-11-16 11:13:42

标签: python regex escaping line-breaks

我正在尝试使用正则表达式从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按原样对待他们?

2 个答案:

答案 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
  制作'。'特殊字符匹配任何字符   所有,包括换行;没有这个标志,'。'会匹配任何东西   除了换行符。

here on docs.python.org