Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于在python中从html提取所有常规文本的正则表达式_Python_Regex - Fatal编程技术网

用于在python中从html提取所有常规文本的正则表达式

用于在python中从html提取所有常规文本的正则表达式,python,regex,Python,Regex,如何从部分html文本中提取非html标记的所有内容 也就是说,如果我有这样的东西: <div>Hello</div><h3><div>world</div></h3> Helloworld 我想提取['Hello','world'] 我想到了正则表达式: >[a-zA-Z0-9]+< [a-zA-Z0-9]+< 但它不包括特殊字符和中文或希伯来文字符,我需要这些字符 从该职位: 你不能用正则表达式解析H

如何从部分html文本中提取非html标记的所有内容

也就是说,如果我有这样的东西:

<div>Hello</div><h3><div>world</div></h3>
Helloworld
我想提取['Hello','world']

我想到了正则表达式:

>[a-zA-Z0-9]+<
[a-zA-Z0-9]+<

但它不包括特殊字符和中文或希伯来文字符,我需要这些字符

从该职位:

你不能用正则表达式解析HTML。太贵了 复杂的。RE's无法处理将在中工作 一个浏览器作为一个适当的文本,但可能会阻碍一个天真的重新

使用合适的HTML解析器,您会更快乐、更成功。 Python人员经常使用一些漂亮的东西来解析HTML和 去掉标签和脚本

此外,从设计上讲,浏览器可以容忍格式错误的HTML。所以你会经常 发现自己试图解析HTML,这显然是不正确的,但是 在浏览器中正常工作

您可能能够用RE解析糟糕的HTML。它所需要的只是 耐心和努力工作。但使用别人的工具通常更简单 解析器


你应该看看

从该职位:

你不能用正则表达式解析HTML。太贵了 复杂的。RE's无法处理将在中工作 一个浏览器作为一个适当的文本,但可能会阻碍一个天真的重新

使用合适的HTML解析器,您会更快乐、更成功。 Python人员经常使用一些漂亮的东西来解析HTML和 去掉标签和脚本

此外,从设计上讲,浏览器可以容忍格式错误的HTML。所以你会经常 发现自己试图解析HTML,这显然是不正确的,但是 在浏览器中正常工作

您可能能够用RE解析糟糕的HTML。它所需要的只是 耐心和努力工作。但使用别人的工具通常更简单 解析器


正如Avi已经指出的,这对于正则表达式来说太复杂了。使用
get_text
from或
clean_html
from从html中提取文本

from bs4 import BeautifulSoup
clean_text = BeautifulSoup(html).get_text()

感谢GuillaumeA,另一个选择是使用:


必须指出的是,如果html格式不好,上述html解析器将以不同的成功程度完成这项工作,因此您应该进行实验,看看什么最适合您的输入数据。

正如Avi已经指出的,这对于正则表达式来说太复杂了。使用
get_text
from或
clean_html
from从html中提取文本

from bs4 import BeautifulSoup
clean_text = BeautifulSoup(html).get_text()

感谢GuillaumeA,另一个选择是使用:


必须指出的是,如果html格式不好,上述html解析器将以不同的成功程度完成这项工作,因此您应该进行实验,看看什么最适合您的输入数据。

我不熟悉Python,但下面的正则表达式可以帮到您

<\s*(\w+)[^/>]*>
]*>
在哪里,

<: starting character

\s*: it may have whitespaces before tag name (ugly but possible).

(\w+): tags can contain letters and numbers (h1). Well, \w also matches '_', but it does not hurt I guess. If curious use ([a-zA-Z0-9]+) instead.

[^/>]*: anything except > and / until closing >

\>: closing >
]*:除>和/或直到结束之外的任何内容>
\>:结束>

我不熟悉Python,但是下面的正则表达式可以帮助您

<\s*(\w+)[^/>]*>
]*>
在哪里,

<: starting character

\s*: it may have whitespaces before tag name (ugly but possible).

(\w+): tags can contain letters and numbers (h1). Well, \w also matches '_', but it does not hurt I guess. If curious use ([a-zA-Z0-9]+) instead.

[^/>]*: anything except > and / until closing >

\>: closing >
]*:除>和/或直到结束之外的任何内容>
\>:结束>

你没有。不要对HTML使用
regex
。使用一个(X)HTML解析器,如BeautifulSoup。如果你想去除HTML标记:BeautifulSoup正是为此目的创建的。关键问题是你的HTML有多复杂。是否有像
这样的容器标签应该删除?您没有。不要对HTML使用
regex
。使用一个(X)HTML解析器,如BeautifulSoup。如果你想去除HTML标记:BeautifulSoup正是为此目的创建的。关键问题是你的HTML有多复杂。是否有像
这样的容器标签应该被删除?我个人也推荐。它很容易使用,速度也很快。使用pyquery如何准确地从html中提取文本?
>>从pyquery导入pyquery
>>d=pyquery('Helloworld')
>>d.text()
'Helloworld'
@GuillaumeA很酷,谢谢。我个人推荐。它易于使用且速度极快。如何使用pyquery从html中提取文本?
>>>从pyquery导入pyquery
>d=pyquery('Helloworld')
>>d.text()
'Helloworld'
@GuillaumeA Cool,谢谢。