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']
我想在模式 "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']