0

我正在尝试规范化非结构化文本文件。我似乎无法弄清楚匹配特定开始和结束边界的表达式是否成功。

示例文本:

"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"在开头找到“”,在结尾找到“Accountability”,但两者之间存在很大程度的可变性。我必须对大约 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)

任何意见是极大的赞赏。

4

1 回答 1

1

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

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

尝试以下站点来测试您的正则表达式http://re-try.appspot.com/

于 2013-10-25T19:29:42.350 回答