Python 在模式后获取引号中的文本

Python Get Text in Quotes After Pattern

我想在模式 "name" 出现后获取引号中的文本。

示例字符串是: info = "name: joe", "name: jerry", "name: kate"

这是我正在做的事情:

import re

string = 'info = "name: joe", "name: jerry", "name: kate"'
array = re.findall(r'"(.*?)"', string)
for x in array:
       x = x.replace(" ","") #remove spaces because there might be space before colon occasionally 
       print(x.split("name:")[1])

输出打印:

joe
jerry
kate

我只是想知道是否有更简单的方法来执行此操作并且 return 与我所做的输出相同。

尝试:

res=list(re.findall(r'\"name: ([^\"]+)"', string))

print(res)

2 件重要的事情 - 您只提取一个组,因此提取方括号,并将名称定义为一个或多个字符的集合,而不是双引号 ",因为正则表达式是默认的贪心(即只匹配最长的匹配)。

输出:

['joe', 'jerry', 'kate']

您可以在正则表达式中嵌入 name: 模式,通过 \s* 解决冒号前偶尔出现的 space 并在冒号后匹配一个或多个 space冒号和实际名称(您从哪里拆分):

re.findall(r'"name\s*:\s+(.*?)"', string)
# ['joe', 'jerry', 'kate']