Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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_Url_Findall - Fatal编程技术网

Python 正则表达式:在文本中搜索HTML标记

Python 正则表达式:在文本中搜索HTML标记,python,regex,url,findall,Python,Regex,Url,Findall,我对正则表达式和HTML特别陌生。我知道BeautifulSoup是处理HTML的一种方法,但我想试试正则表达式 我需要在文本中搜索HTML标记(我使用findall)。我在Stackoverflow中尝试了多个场景和示例,但只得到了[](空字符串)。以下是我尝试过的: #reHTML = r'(?:<([A-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1>)' #reHTML = r'\<p>(.*?)\</p>' #reHTM

我对正则表达式和HTML特别陌生。我知道BeautifulSoup是处理HTML的一种方法,但我想试试正则表达式

我需要在文本中搜索HTML标记(我使用findall)。我在Stackoverflow中尝试了多个场景和示例,但只得到了[](空字符串)。以下是我尝试过的:

#reHTML = r'(?:<([A-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1>)'
#reHTML = r'\<p>(.*?)\</p>'
#reHTML = r'<p>(.*?)\</p>'
#reHTML = r'<raw[^>]*?>(.*?)</raw>'

reHTML = r'<p>(.*?)</p>'

#reHTML = r'<.*?>'

显然,我遗漏了一些东西。请提供帮助

这将在网页中阅读并找到
的任何实例。这就是您正在寻找的解决方案吗

import re
import urllib2
url = "http://stackoverflow.com"
f = urllib2.urlopen(url)
file = f.read()
p = re.compile("<html>|</html>")
instances = p.findall(file)
print instances
重新导入
导入urllib2
url=”http://stackoverflow.com"
f=urllib2.urlopen(url)
file=f.read()
p=重新编译(“|”)
实例=p.findall(文件)
打印实例
输出:

['<html>', '</html>']
['',]
我想你的问题是你试图在URL字符串中搜索HTML标记,而不是实际加载网页并搜索它。

你误解了

HTMLpara=rHTML.findall('http://pythonprogramming.net/parse-website-using- 正则表达式urllib/',re.IGNORECASE)
意味着您将用字符串(
)匹配
rHTML
模式http://pythonprogramming.net/parse-website-using- 正则表达式urllib/“
),因此您将获得
[]

您最好请求URL来获取数据,然后调用findall来分析结果字符串,如下所示

导入urllib.request
进口稀土
url='1〕http://pythonprogramming.net/parse-website-using-regular-expressions-urllib/'
req=urllib.request.request(url)
resp=urllib.request.urlopen(req)
respData=resp.read()
段落=re.findall(r'(.*?

),str(respData))
您的意思是搜索网页的内容吗?现在您只是在搜索URL。@DigitalLink-HTML标记,而不是完整的内容。我肯定我搞砸了。非常新的正则表达式:)使用html解析器,而不是正则表达式。可能:)html不是我的领域,但需要学习处理可能包含所有内容的文本。我实际上需要两个正则表达式:一个用于URL,一个用于标记。我只是从标签开始。然而,在您的示例中,您使用的是html而不是http或https(两者都需要)。我又错过了什么吗?:)如果你需要帮助生成正则表达式来为你的文本创建匹配项,这个网站真的很好:我会试试。谢谢,它只打印['',''。缺少什么?期望的输出是什么?请澄清一下,“请求URL”是什么意思?抱歉,这是一个愚蠢的问题,但正则表达式对我们来说是非常陌生的me@Toly我的意思是,你应该通过url获取html页面数据,然后对数据进行正则化
findall
将第一个参数用作字符串,它不会通过url获取数据,你的代码是否意味着你想要匹配url字符串。我想这是在一些好人的帮助下实现的。这是一个伟大的观点!我只是一个新手,正在学习:)
['<html>', '</html>']
import urllib.request
import re

url = 'http://pythonprogramming.net/parse-website-using-regular-expressions-urllib/'

req = urllib.request.Request(url)
resp = urllib.request.urlopen(req)
respData = resp.read()
paragraphs = re.findall(r'<p>(.*?)</p>',str(respData))