在HTML单元格中使用HTML进行Python正则表达式解析

在HTML单元格中使用HTML进行Python正则表达式解析,python,html,regex,parsing,Python,Html,Regex,Parsing,编辑:我注意到这已经被否决为一个副本,但事实并非如此,因为副本解决方案涉及使用beautifulsoup进行解析。我知道beautifulsoup是解决这个问题的更好方法,但为了学习,我一直在尝试使用正则表达式 我是正则表达式的新手,正在为HTML表开发一个基于Python的正则表达式解析器。到目前为止,我已经成功地生成了正确解析普通行、单元格和标题的模式,但我希望修改我的正则表达式以适应单元格和标题中的HTML。本质上,我希望不计算较大单元格中的HTML代码,这样做: found = re.f

编辑:我注意到这已经被否决为一个副本,但事实并非如此,因为副本解决方案涉及使用beautifulsoup进行解析。我知道beautifulsoup是解决这个问题的更好方法,但为了学习,我一直在尝试使用正则表达式

我是正则表达式的新手,正在为HTML表开发一个基于Python的正则表达式解析器。到目前为止,我已经成功地生成了正确解析普通行、单元格和标题的模式,但我希望修改我的正则表达式以适应单元格和标题中的HTML。本质上,我希望不计算较大单元格中的HTML代码,这样做:

found = re.findall(isHeader,"<th>Student</th> Name</th>")
found = "Student</th> Name"
found=re.findall(isHeader,“学生姓名”)
found=“学生姓名”
在做了一些研究之后,我试图用前瞻性的方法来解决这个问题:

isHeader = r'<th\s*>([\S\s]*?)</th\s*>(?!(?:</th\s*>))'
isHeader=r'([\S\S]*?)(?!(?:)' 此正则表达式试图隔离以“
”开头、以“
”结尾的字符串,前提是在下一个模式开始之前,同一模式中不再有“
”字符串。模式成功地隔离了“正确”的头(头本身没有
s),但未能正确解析“不正确”的头,在找到的第一个
处停止字符串

我假设我的前瞻性计划没有得到正确的实施。如有任何建议,将不胜感激


谢谢大家!

像这样的东西怎么样:

(?<=<th>).*(?=<\/th>)

(?谢谢你,Henry。它工作得很好,只是需要遵循html约定,允许在“th”(ie)后面有无限的空格)。我可以很容易地在第二组正则表达式中解释这一点,但在第一组中无法解释,因为后面的宽度不固定。知道如何解决这个问题吗?再次感谢!分析您的,我认为您可能只需要使正则表达式“贪婪”而不是“懒惰”:
([\S\S]*)(?!(?:)
Demo: