根据你提供的代码和正则表达式,问题出在
re.search(title_pattern, strings).group() 这一行。你使用的是
group() 函数来获取匹配结果,但它会返回整个匹配结果,包括正则表达式中的所有捕获组。
在这里,
title_pattern 使用了一个非贪婪(非最大匹配)的通配符
.*? 来匹配导演的名字。然而,
re.search().group() 会返回整个正则表达式匹配的结果,包括
': ' 后面的内容。
为了只获取导演的名字,你可以使用
group(1) 来指定只返回第一个捕获组的内容。捕获组是由圆括号括起来的部分。在这个例子中,你只有一个捕获组,即导演的名字。
以下是修改后的代码:
- import re
- strings = '导演: 加布里尔·穆奇诺 Gabriele Muccino 主演:'
- title_pattern = re.compile('导演: (.*?) 主演:', re.S)
- title = re.search(title_pattern, strings).group(1)
- print(title)
复制代码
使用
group(1) 只返回第一个捕获组,也就是导演的名字。输出结果应该是
加布里尔·穆奇诺。