与正则表达式模式python3明显不一致

2024-09-27 21:34:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python3中的re模块从HTML文档中提取一些数据。 我下载了这个URL的源HTML:http://diablo2.diablowiki.net/Rune_list,并将文件重命名为rune_list.html。你知道吗

我想要的是div块中的id="mw-content-text", 所以我写了这个代码:

import re

file=open('rune_list.html','r')
data=file.read()
file.close()

pat=re.compile(r'<div id="mw-content-text"[\s\S]*</div>')
found=re.search(pat,data)

什么也没找到。我知道正则表达式可能不太好,因为据我所知,*的存在可能会将其他</div>包含在这个正则表达式中,使得匹配的字符串成为一大块divs

但为什么它什么也找不到? 我用我写的一个文件,一个长字符串,尝试了同样的模式 它以“<div id="mw-…”开始,以“</div>”结束,其中包含一些随机表,以模拟我想要找到的内容:在本例中,匹配的字符串是找到了。那个regex虽然写得不好,但也应该在原版上使用。我知道文件中有这些行。你知道吗

因此,我尝试对原始文档进行更简单的搜索:首先搜索mw-content-text,不带双引号,然后找到匹配的字符串。 然后我尝试了"mw-content-text",用双引号,什么都没有找到了。找到了找不到更大的图案,因为找不到这个。你知道吗

如果我搜索<div id="mw-,会很混乱。。。在源页面中手动(通过浏览器上的“查看页面源”打开),元素在那里。另外,我已经用regex在其他类似代码的HTML文档上做了一些搜索,它可以工作(有点)。我知道(并使用了一些)解决这个问题的其他方法(例如BeautifulSoup),但我想尝试使用regex作为练习。你知道吗

我错过了什么?你知道吗


Tags: 文件字符串text文档divreidhtml

热门问题