正则表达式选择字符串

时间:2014-05-06 00:41:46

标签: python regex

尝试使用正则表达式选择<title> </title>之间的值。

但有时这两个标签位于不同的行上。

2 个答案:

答案 0 :(得分:1)

正如其他人所说,使用完整的标记语言解析器(例如stdlib的htmlparser甚至BeautifulSoup)比正则表达式更强大,更脆弱。虽然,由于正则表达式似乎是一个要求,也许这样的事情会起作用:

import urllib2
import re

URL = 'http://amazon.com'
page = urllib2.urlopen(URL)
stream = page.readlines()
flag = False
for line in stream:
    if re.search("<title>", line):
        print line
        if not re.search("</title>", line):
            flag = True
    elif re.search("</title>", line):
        print line
        flag = False
    elif flag == True:
        print line

当它找到<title>标记时会打印该行,检查以确保结束标记不在同一行上,然后继续打印行直到找到结束{{1} }。

答案 1 :(得分:1)

如果您不能使用解析器,只需通过暴力破解即可。将HTML文档读入字符串doc,然后:

try:
    title = doc.split('<title>')[1].split('</title>')[0]
except IndexError:
    ## no title tag, handle error as you see fit

请注意,如果有一个没有匹配结束标记的开始标题标记,则搜索会成功。在格式良好的HTML文档中不是一种可能的情况,但仅供参考。