Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python在模式后获取引号中的文本_Python_Re - Fatal编程技术网

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

Python在模式后获取引号中的文本,python,re,Python,Re,我想在模式“name”出现后在引号中获取文本 示例字符串为: info=“姓名:乔”、“姓名:杰瑞”、“姓名:凯特” 以下是我正在做的: 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 ther

我想在模式“name”出现后在引号中获取文本

示例字符串为:
info=“姓名:乔”、“姓名:杰瑞”、“姓名:凯特”

以下是我正在做的:

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
我只是想知道是否有比我做的更简单的方法来实现这一点并返回相同的输出

试试看:

res=list(re.findall(r'\'名称:([^\']+)”,字符串))
打印(res)
2件重要的事情-您只提取一个组,因此是方括号,并且您将名称定义为一个或多个字符集,而不是双引号
,因为正则表达式是默认贪婪的(即仅匹配最长的匹配)

产出:

['joe'、'jerry'、'kate']
试试:

res=list(re.findall(r'\'名称:([^\']+)”,字符串))
打印(res)
2件重要的事情-您只提取一个组,因此是方括号,并且您将名称定义为一个或多个字符集,而不是双引号
,因为正则表达式是默认贪婪的(即仅匹配最长的匹配)

产出:

['joe'、'jerry'、'kate']

您可以在正则表达式中嵌入
名称:
模式,通过
\s*
说明冒号前的临时空格,还可以将冒号后的一个或多个空格与实际名称(从中拆分)匹配:


您可以在正则表达式中嵌入
名称:
模式,通过
\s*
说明冒号前的临时空格,还可以将冒号后的一个或多个空格与实际名称(从中拆分)匹配:

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