【发布时间】:2021-12-11 06:46:46
【问题描述】:
我想从下面的 HTML 中过滤掉带有类的 p 标签,而不影响它后面的任何其他 p 标签。
<article data-article-content>
<div class="abc">
<p class="ghf">Some Text</p>
<p>Some other Text</p>
<p>A different Text</p>
</div>
</article>
我正在使用什么:
def myFunction(result):
result = re.sub(r'<article data-article-content><div class="abc"><p class="ghf">.*?</p><\/article>',' ',result)
return result
我将调用这个函数并打印出来应该省略“一些文本”。 我是正则表达式的初学者。请帮忙提出建议
预期输出:
其他一些文字 不同的文字
【问题讨论】:
-
欢迎来到 Stack Overflow!不要使用正则表达式来解析 HTML。这是bad idea。但是why not? 这里是some examples 您可能会遇到的问题。请改用HTML parser。
-
你想用给定的 HTML 实现什么。也许您可以多解释一下用例或上下文,这样我们就可以找到比正则表达式更好的解决方案。因为正则表达式可能会极大地限制您的解决方案。
-
没有
</p><\/article>所以当然正则表达式不匹配。替换到</article>的末尾显然会替换所有<p>节点,而不仅仅是第一个节点。能否请edit 澄清预期结果应该是什么? -
感谢您的建议。我正在从网站上获取主体。我想避免从中刮掉不需要的文本。我现在正在尝试 BeautifulSoup。我会用更多信息更新问题。