正则
请问各位大佬,这个正则为什么不是直接把导员后面的提取出来,而是导演两个字页提取出来了import re
strings = '导演: 加布里尔·穆奇诺 Gabriele Muccino 主演: '
title_pattern = re.compile('导演: (.*?) 主演:',re.S)
title = re.search(title_pattern,strings).group()
print(title)
这是打印出的结果
导演: 加布里尔·穆奇诺 Gabriele Muccino 主演: 根据你提供的代码和正则表达式,问题出在 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) 只返回第一个捕获组,也就是导演的名字。输出结果应该是 加布里尔·穆奇诺。
页:
[1]