正则表达式:在<tag>和\ n或</tag>之间取字符串

时间:2016-05-19 11:29:18

标签: python regex

我无法弄清楚我错在哪里。

我有一堆页面,我需要从中获取标签的内容并将其作为文件名。

我的正则表达式

title2 = re.search(r'(<title>)(.+)(</title>)', content)
filename_test = str(title2.group(2)+'.txt')

它的工作正常,直到这样的标题:

<title>Klaatu - barada nikto
</title>

我尝试了很多变种,但都没有。

主要想法是这样的事情应该有效:

title2 = re.search(r'(<title>)(.+)(\n|(</title>))', content)

即。 “当你来到新行此标记时停止” 但事实并非如此。

1 个答案:

答案 0 :(得分:0)

<(title)>[\S\s]*<\/title>

正如您所发现的那样,.与新行不匹配 - 您可以使用[\S\s]匹配“不是空格或空格”的任何字符 - 基本上都是任何字符。

实际上有很多方法可以解决这个问题 - 看看这个替代方案的问题:Regex to match any character including new lines