如何通过 python 忽略正则表达式中的 html 注释标签
How to Ignore html comment tag in regex through python
我正在用一些 asci 代码替换特殊字符并在下面的正则表达式
的帮助下忽略 html 标签
text_list = re.findall(r'>([\S\s]*?)<', html)
所以它忽略了我们想要的所有 html 标签,但没有忽略 html 评论结束标签“-->”。
感谢任何帮助。
我应该在正则表达式中更改什么。
附上截图供您参考。
您可以使用 re.findall
:
匹配并丢弃它们
text_list = list(filter(None, re.findall(r'(?s)<!--.*?-->|>(.*?)<', html)))
# Or, a bit more efficient:
text_list = list(filter(None, re.findall(r'<!--[^-]*(?:-(?!->)[^-]*)*-->|>([^<]*)<', html)))
参见 this regex demo (and the second one)。
正则表达式匹配<!--
和-->
之间的子串,匹配<
和>
之间的子串,捕获文本如果模式中有捕获组,则后两个定界符到第 1 组和 re.findall
之间仅 returns 捕获。
参见 Python demo:
import re
html = "<a href='link.html'>URL</a>Some text <!-- Comment --><p>Par here</p>More text"
text_list = list(filter(None, re.findall(r'(?s)<!--.*?-->|>(.*?)<', html)))
print(text_list)
# => ['URL', 'Some text ', 'Par here']
请在读取文件时尝试,请传递多个编码参数
我正在用一些 asci 代码替换特殊字符并在下面的正则表达式
的帮助下忽略 html 标签text_list = re.findall(r'>([\S\s]*?)<', html)
所以它忽略了我们想要的所有 html 标签,但没有忽略 html 评论结束标签“-->”。
感谢任何帮助。 我应该在正则表达式中更改什么。
附上截图供您参考。
您可以使用 re.findall
:
text_list = list(filter(None, re.findall(r'(?s)<!--.*?-->|>(.*?)<', html)))
# Or, a bit more efficient:
text_list = list(filter(None, re.findall(r'<!--[^-]*(?:-(?!->)[^-]*)*-->|>([^<]*)<', html)))
参见 this regex demo (and the second one)。
正则表达式匹配<!--
和-->
之间的子串,匹配<
和>
之间的子串,捕获文本如果模式中有捕获组,则后两个定界符到第 1 组和 re.findall
之间仅 returns 捕获。
参见 Python demo:
import re
html = "<a href='link.html'>URL</a>Some text <!-- Comment --><p>Par here</p>More text"
text_list = list(filter(None, re.findall(r'(?s)<!--.*?-->|>(.*?)<', html)))
print(text_list)
# => ['URL', 'Some text ', 'Par here']
请在读取文件时尝试,请传递多个编码参数