【发布时间】:2017-09-05 12:50:15
【问题描述】:
在我的 python 脚本中,它需要一个类似的表达式
"\[.*[ERROR].*\n.*\n.*\n.*/\n.*is for multiple time/[\]]{2}"
请让我知道如何多次服用"\n."...我卡在这个地方了
【问题讨论】:
标签: python
在我的 python 脚本中,它需要一个类似的表达式
"\[.*[ERROR].*\n.*\n.*\n.*/\n.*is for multiple time/[\]]{2}"
请让我知道如何多次服用"\n."...我卡在这个地方了
【问题讨论】:
标签: python
有可用的 multiline 标志,让您可以跨多行匹配。
https://docs.python.org/2/library/re.html#re.MULTILINE
re.多行
当指定时,模式字符 '^' 匹配字符串的开头和每行的开头(紧跟在每个换行符之后);并且模式字符 '$' 匹配字符串的末尾和每行的末尾(紧接在每个换行符之前)。默认情况下,'^' 仅匹配字符串的开头,而 '$' 仅匹配字符串的末尾以及字符串末尾的换行符(如果有)之前。
您还可以访问 DOTALL,它的 . 甚至可以匹配换行符
re.DOTALL
制作'.'特殊字符完全匹配任何字符,包括换行符;没有这个标志,'.'将匹配除换行符以外的任何内容。
根据你的匹配,这两个标志让你选择如何处理换行符。在您的情况下,您可能希望像这样调整您的模式:
text = '\n[ [ERROR]\n\nsome text\nis for multiple time]'
re.findall("\[.*\[ERROR\].*is for multiple time\]", text, re.DOTALL)
# result: ['[ [ERROR]\n\nsome text\nis for multiple time]']
【讨论】: