python开发非贪婪的正则表达式以匹配特定模式几次

时间:2015-06-05 12:33:42

标签: python regex

我即将为我想要处理的文件中给出的模式开发一个正则表达式。

该文件包含多篇文章,这些文章都遵循类似的模式:

  1. 从一行开始,即换行符
  2. 然后在一行上有一些非单词字符,然后是" Dokument xx von xx"和换行符
  3. 后面跟着一个字符
  4. 以两个换行符结尾,后跟一行非字符,后跟"版权所有"接下来是更多字符和新行
  5. 一个包含非单词字符的可选行,后跟更多字符和新行
  6. 最后一行包含非单词字符,后跟"保留所有权利"或者" Alle Rechte vorbehalten"和一个新行
  7. 我尝试提出一个非贪婪的正则表达式,它准确地匹配文章的开头,正文和结尾。

    对于1-4我有^n\W+Dokument.+?[\r\n][\r\n]\W+Copyright[^\n]+\n

    5-6需要什么?

    我是否真的需要一个dotall标志,如果我打算使用这个正则表达式建议在文件中多次匹配模式?

    我整天都在这。有新鲜思想的人能否向我展示缺失的部分?

    干杯, 安德鲁

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

  
      
  1. 一个包含非单词字符的可选行,后跟更多字符和新行
  2.   
(\W+?(?:(?!All|Alle).)+?\n)?
  
      
  1. 一行包含非单词字符,后跟“All Rights Reserved”或“Alle Rechte vorbehalten”和新行
  2.   
\W+(All Rights Reserved|Alle Rechte vorbehalten)\n

结合1-6:

^\W+Dokument.+?[\r\n][\r\n]\W+Copyright[^\n]+\n(\W+?(?:(?!All|Alle).)+?\n)?\W+?(?:All Rights Reserved|Alle Rechte vorbehalten)\n

请参阅DEMO