首页 > 解决方案 > Python在模式后获取引号中的文本

问题描述

我想在模式“名称”出现后获取引号中的文本。

示例字符串是: 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

我只是想知道是否有任何更简单的方法可以做到这一点并返回与我所做的相同的输出。

标签: pythonre

解决方案


尝试:

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

print(res)

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

输出:

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

推荐阅读