哈岁NB 发表于 2023-7-12 16:21:16

正则

请问各位大佬,这个正则为什么不是直接把导员后面的提取出来,而是导演两个字页提取出来了
import re
strings = '导演: 加布里尔·穆奇诺 Gabriele Muccino 主演: '
title_pattern = re.compile('导演: (.*?) 主演:',re.S)
title = re.search(title_pattern,strings).group()
print(title)
这是打印出的结果
导演: 加布里尔·穆奇诺 Gabriele Muccino 主演:

陶远航 发表于 2023-7-12 16:21:30

根据你提供的代码和正则表达式,问题出在 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]
查看完整版本: 正则