用于捕获#Facilitator:"Full Name <mail@mail.domain>"

请帮助正则表达式,语言可以是任何语言。我稍后会把它翻译成 python。

我正在尝试构建一个正则表达式来捕获下面的标签:

#Facilitator:"Full Name <mail@mail.domain>"
  • 全名可以带有重音符号,例如 José、Pâmela 或 ASCII 表中可用的任何符号。

  • 全名可以有 1、2 或 n 个姓氏。名称末尾可以有或没有“(公司名称)”:例如#Facilitator:"Name1 Name2 Name3 (Company Inc) <mail@domain>"

  • 标签可以在字符串中出现 0 次、1 次或 n 次。

  • 标签可以出现在字符串的任何地方。

到目前为止尝试这样(python)但没有成功:

import re


notes = 'Verbal confirmation #Facilitator:"Fernas P. Loyola (YARDA LTDA) <ope@yahoo.com>"from ATUX with Melanie. Waiting for scheduling#Facilitator:"Fernandes <v-rrlo@stttr.de>" #Facilitator:"Pablito Ferdinandes <papa@gmail.com>"'


facilitator_regex = '^.*((#Facilitator:".*"){1,}).*$'

regex_replace = '\\1'


print(re.sub(facilitator_regex, regex_replace, notes))

我期望的输出是一个由空格分隔的 0、1 或更多#tags 的列表。

对任何语言有帮助吗?我主要需要正则表达式本身的帮助。非常感谢。


BIG阳
浏览 119回答 1
1回答

ibeautiful

您可以找到使用此正则表达式的所有促进者re.findall:'#Facilitator:"[^"]*"'例如facilitator_regex = '#Facilitator:"[^"]*"' facilitators = re.findall(facilitator_regex, notes)对于您的示例数据,这给出了[  '#Facilitator:"Fernas P. Loyola (YARDA LTDA) <ope@yahoo.com>"',  '#Facilitator:"Fernandes <v-rrlo@stttr.de>"',  '#Facilitator:"Pablito Ferdinandes <papa@gmail.com>"' ]然后你可以用来str.join制作一个以空格分隔的列表:print(' '.join(facilitators))输出:#Facilitator:"Fernas P. Loyola (YARDA LTDA) <ope@yahoo.com>" #Facilitator:"Fernandes <v-rrlo@stttr.de>" #Facilitator:"Pablito Ferdinandes <papa@gmail.com>"
打开App,查看更多内容
随时随地看视频慕课网APP