Regex 正则表达式未正确返回的自定义HTMLPasser
我正在开发一个程序,它根据不同的正则表达式从HTML文件中提取一些信息。我遇到了以下代码的错误 我的HTMLParser子类:Regex 正则表达式未正确返回的自定义HTMLPasser,regex,python-2.7,html-parsing,Regex,Python 2.7,Html Parsing,我正在开发一个程序,它根据不同的正则表达式从HTML文件中提取一些信息。我遇到了以下代码的错误 我的HTMLParser子类: class MyHtmlParser(HTMLParser): def __init__(self): self.reset() self.title = [] def handle_data(self, d): Result = re.search(r'ANMELDELSE .*(?=</b>
class MyHtmlParser(HTMLParser):
def __init__(self):
self.reset()
self.title = []
def handle_data(self, d):
Result = re.search(r'ANMELDELSE .*(?=</b>)',d)
if Result:
self.title.append(Result.group(0))
def return_data(self):
return self.title
现在HTML文件非常凌乱,而且是挪威语的,但是这里有一个子集应该会触发这种情况
<p style="margin: 0cm 0cm 0pt;"><span style="text-decoration: underline;">Sak 428/18-123, 03.09.2018 </span></p>
<p style="margin: 0cm 0cm 0pt;"><b> </b></p>
<p style="margin: 0cm 0cm 0pt;"><b>ANMELDELSE FOR TRAKASSERING</b></p>
Sak 428/18-123,2018年9月3日
用于TRAKASSERING的ANMELDELSE
这应该选择“ANMELDELSE FOR TRAKASSERING”,它在和中都有,但是在执行代码时,我得到的只是一个空列表。这段代码已经在以前的正则表达式调用中使用过,所以我有点不知所措
希望有人能帮忙 如果您的文本仅在某些文本节点中具有
ANMELDELSE
,您可以使用
r'ANMELDELSE[^<>]*'
r'ANMELDELSE[^]*'
原始模式包含一个文本规则空格(\x20
)。在文本编辑器/查看器中,通常使用空格来确保下一个单词保持在同一行,而不是空格
要匹配它,可以使用
\s
并将re.U
修饰符(在使用Python 2.7时是必需的)传递给re.search
方法,但由于要匹配到标记的末尾,只需使用一个否定字符类[^]*
,除了
之外的任何0+字符如果我在这里使用正则表达式,我会使用类似r'ANMELDELSE[^]*
的东西。你确定那里的空间没有不间断的空间吗?当你调用handle_data(self,d)
时,什么样的对象以d
的形式传入?这确实有助于@WiktorStribiżew!你介意澄清一下你所说的不间断空间是什么意思吗?当我在两个网站上都试过的时候,我很困惑,这两个网站给了我正确的答案。这是一个,非常类似于一个普通的空间。可能就是这样,它现在似乎可以工作了!谢谢@WiktorStribiżew!
r'ANMELDELSE[^<>]*'