我正在尝试使用 Python 的 re 模块解析复杂的 HTML 结构,但我的正则表达式模式遇到了障碍。这就是我正在尝试做的事情:
我有包含嵌套元素的 HTML 文本,我想提取最里面标签的内容。但是,我似乎无法正确使用正则表达式模式。这是我正在使用的代码:
import re
html_text = """
<div>
<div>
<div>
Innermost Content 1
</div>
</div>
<div>
Innermost Content 2
</div>
</div>
"""
pattern = r'<div>(.*?)<\/div>'
result = re.findall(pattern, html_text, re.DOTALL)
print(result)
我期望这段代码返回最里面元素的内容,如下所示:
['Innermost Content 1', 'Innermost Content 2']
但它没有按预期工作。我的正则表达式模式做错了什么,如何修复它以达到预期的结果?任何帮助将不胜感激!
你可以使用这个:
[re.sub(r'<div>|<\/div>|\s+', '', item) for item in result]
你也可以使用合适的 HTML 解析库,比如 BeautifulSoup 来代替:
# Parse the HTML with BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
# Find all <div> elements and extract their text
div_elements = soup.find_all('div')
for div in div_elements:
print(div.get_text())
尝试使用更改后的模式和额外的行来删除此修改后的代码
import re
html_text = """
<div>
<div>
<div>
Innermost Content 1
</div>
</div>
<div>
Innermost Content 2
</div>
</div>
"""
pattern = r'<div>([^<]*?)<\/div>'
result = re.findall(pattern, html_text, re.DOTALL)
result = [content.strip() for content in result if content.strip()]
print(result)