我正在尝试规范化非结构化文本文件。我似乎无法弄清楚匹配特定开始和结束边界的表达式是否成功。
示例文本:
"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)
任何意见是极大的赞赏。