我正在尝试使用正则表达式从文件中读取的文本中解析出一些行。我知道这可以通过逐行读取文件来完成,但我喜欢在单个正则表达式匹配中捕获所有相关信息的优雅。
示例文件内容:
---
title: a title
layout: page
---
here's some text
================
this will be blog post content.
我正在尝试生成一个将返回2组的正则表达式匹配:“---”行之间的数据和第2个“---”行之后的所有数据。这是我提出的正则表达式字符串,我遇到了问题:
re.match('---\n(.*?)\n---\n(.*)', content, re.S)
这似乎运行良好,除了处理unix vs windows line-endings时。有没有办法让这个正则表达式匹配\ r \ n如果它也存在?它适用于unix,我相信它只是\n
。
另外,如果你认为这个正则表达式可以改进,我愿意接受建议。
答案 0 :(得分:4)
行标记的结尾被视为空格,因此您可以使用构造\s+
来匹配与平台无关的行尾(和其他空格)。
答案 1 :(得分:3)
序列(\r\n|\r|\n)
将匹配所有“正常”行结尾(分别为Windows,旧Mac和* nix)。