正则表达式匹配的部分摘录
-
19-09-2019 - |
题
我希望有一个正则表达式来提取一个HTML页的标题。目前我有这样的:
title = re.search('<title>.*</title>', html, re.IGNORECASE).group()
if title:
title = title.replace('<title>', '').replace('</title>', '')
是否有一个正则表达式来提取的<标题>只是内容,所以我不必去除标签?
其他提示
尝试使用捕获组:
title = re.search('<title>(.*)</title>', html, re.IGNORECASE).group(1)
请注意起始Python 3.8
,并引入赋值表达式的(PEP 572)一>(:=
运营商),则可能由if内直接捕获所述匹配结果来改善的KrzysztofKrasoń的溶液位在条件的身体状况作为变量并重新使用它:
# pattern = '<title>(.*)</title>'
# text = '<title>hello</title>'
if match := re.search(pattern, text, re.IGNORECASE):
title = match.group(1)
# hello
re.search('<title>(.*)</title>', s, re.IGNORECASE).group(1)
所提供的代码片段不与Exceptions
应付
我建议
getattr(re.search(r"<title>(.*)</title>", s, re.IGNORECASE), 'groups', lambda:[u""])()[0]
如果该图案还没有找到这将返回默认空字符串,或第一个匹配。
尝试:
title = re.search('<title>(.*)</title>', html, re.IGNORECASE).group(1)
我可以建议你到美味的汤。汤是很好的LIB分析所有的HTML文档。
soup = BeatifulSoup(html_doc)
titleName = soup.title.name
我认为这应该足够了:
#!python
import re
pattern = re.compile(r'<title>([^<]*)</title>', re.MULTILINE|re.IGNORECASE)
pattern.search(text)
...假设你的文本(HTML)是在一个名为变量 “文本。”
这还假定有不可合法地嵌入到HTML标题标记和没有办法合法嵌入这种容器/块内的任何其它<字符的内部的其他HTML标签。
<强>然而强> ...
不要使用Python中HTML解析正则表达式。使用HTML解析器! (除非你打算写一个完整的解析器,这将是一个额外的工作时各种HTML,SGML和XML解析器已经在标准库。
如果您处理 “真实世界” 的标签汤 HTML(这是经常不符合任何SGML / XML验证),然后使用的 BeautifulSoup 包。这不是在标准库(还),但宽推荐用于此目的。
另一种选择是: LXML ...被用于适当地构造(标准符合性)HTML编写的。但它有一个选项,以还原到使用BeautifulSoup作为解析器: ElementSoup
不隶属于 StackOverflow