【发布时间】:2018-05-10 04:29:16
【问题描述】:
编辑:我注意到这被认为是重复的,但事实并非如此,因为重复的解决方案涉及使用 beautifulsoup 进行解析。我知道beautifulsoup是解决这个问题的更好方法,但是为了学习,我一直在尝试使用Regex。
我是 Regex 的新手,正在为 HTML 表开发基于 Python 的 Regex 解析器。到目前为止,我已经设法生成正确解析正常行、单元格和标题的模式,但我希望修改我的正则表达式以适应单元格和标题中的 HTML。本质上,我希望不评估较大单元格中的 HTML 代码,执行以下操作:
found = re.findall(isHeader,"<th>Student</th> Name</th>")
found = "Student</th> Name"
在做了一些研究之后,我正在尝试使用前瞻来解决问题:
isHeader = r'<th\s*>([\S\s]*?)</th\s*>(?!(?:</th\s*>))'
此正则表达式尝试隔离以“<th>”开头并以“</th>”结尾的字符串,前提是在下一个模式开始之前同一模式中不再有“</th>” .该模式成功地隔离了“正确的”标头(标头本身没有</th>s),但未能正确解析“不正确的”标头,在找到的第一个</th> 处停止字符串。
我假设我的前瞻被错误地实现了。任何建议将不胜感激。
谢谢!
【问题讨论】: