正则表达式模式匹配特定的开始和结束锚点与中间的可变单词

时间:2013-10-25 19:11:18

标签: python regex

我正在尝试规范化非结构化文本文件。我似乎无法找出匹配特定开始和结束边界的表达式,并取得任何成功。

示例文本:

"Section 13 - Governmental Oversight and Operational Accountability."
"Section 13 : Governmental Over-sight and Accountability."
"Section 13. Governmental Oversights, Controls and Operational Accountability."
"Section 13.\nGovernmental Oversight\nand Operational Accountability."

鉴于上面的示例,我总是希望在开头找到“Section 13([ \.:-{0,2}])(space|newline)Governmental"”,最后找到“问责制”,但两者之间存在很大的差异。我必须重复这个过程。 30节。我通过逐行迭代文件并将5行字符串连接发送到模式匹配器来解析这些文档。

我的第一次尝试是尝试考虑每个部分单词的每个排列,但这证明了它们非常无效。

我的最新尝试根本不起作用:

s13 = lambda t : re.match(r'^(Section(\s{0,})(\n{0,})(\s{0,})13(\.|:?)(\s{0,})(Governmental(\s{0,}.*Accountability)', t, re.I|re.S)

非常感谢任何建议。

1 个答案:

答案 0 :(得分:1)

也许使用+运算符作为范围。这似乎与您的示例文本有关。

Section[\s\\n]+13[ -:\\n]+(Governmental.*?Accountability\.)

尝试使用以下网站测试正则表达式http://re-try.appspot.com/