段落的

时间:2016-10-04 08:34:49

标签: python regex

嗨,我把它作为我的测试字符串:

<image>
<title>CNN.com - Technology</title>
<link>http://www.cnn.com/TECH/index.html?eref=rss_tech</link>

我想选择&#39;技术&#39;从它使用python正则表达式,但我需要它具体,以便它使用<image><link>。到目前为止,我的表达是:

'<title[^>]*>CNN.com - (.*?)</title>'

此表达式可用于选择“技术”,这是正确的,但我不确定如何使用表达式中的<image><link>来专门化我的代码。例如,我需要这个正则表达式'<image><title[^>]*>CNN.com - (.*?)</title><link>'的内容,它实际上可以产生相同的“技术”结果?

3 个答案:

答案 0 :(得分:1)

你的正则表达式并不错,但你需要使用反斜杠转义</title>中的斜杠,因为字符串中的换行符不匹配。

新行是空格(如空格,制表...... \ s等于[\ t \ n \ r \ n \ f \ v],当未设置UNICODE标志时),因此您可以使用\ s来匹配它们。

我假设您正在使用python3,但这并不重要。

s = """<image>
<title>CNN.com - Technology</title>
<link>http://www.cnn.com/TECH/index.html?eref=rss_tech</link>"""
r = r"<image>[\s]*<title[^>]*>CNN.com - (.*?)<\/title>[\s]*<link>"
m = re.search(r, s)
print(m.group(0))
print(m.group(1))

组(1)是&#34;技术&#34;。

答案 1 :(得分:0)

这样的事情怎么样:

(<image>\n<title>CNN.com - )(.*?)(<\/title>\n.*) 

第2组将是Technology

答案 2 :(得分:0)

如果你使用&#39;单行&#39;正则表达式的选项,您使用.命名换行符。所以,你可以这样做:

<image>.<title[^>]*>CNN.com - (.*?)</title>.<link>