Python Regex在HTML细胞内用HTML解析



编辑:我注意到这已被授予重复,但是它不是,因为重复的解决方案涉及使用美丽的套件进行解析。我知道Beautifulsoup是解决这个问题的更好解决方案,但是为了学习,我一直在尝试使用Regex。

我是Regex的新手,正在为HTML桌子制作基于Python的Regex Parser。到目前为止,我设法生成了正确解析正常行,单元格和标头的模式,但是希望修改我的正则表达式以适应细胞和标题内的HTML。本质上,我希望将较大的单元格内的HTML代码留下来,这样做类似的事情:

found = re.findall(isHeader,"<th>Student</th> Name</th>")
found = "Student</th> Name"

进行了一些研究之后,我试图使用look-tead来解决问题:

isHeader = r'<ths*>([Ss]*?)</ths*>(?!(?:</ths*>))'

此正则是试图隔离以" <th>"开头的字符串,并以" </th>"结尾,只要在下一个模式开始之前就没有相同模式的" </th>" s。该模式成功地隔离了"正确的"标头(在标题本身中没有</th> s),但无法正确解析"不当"标头,在第一个</th>找到了字符串。

我假设我的外观已经错误地实现了。任何建议将不胜感激。

谢谢!

这样的事情怎么样:

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

演示:https://regex101.com/r/hil3zi/1

最新更新