我有以下格式的字符串:
Vince的产品反馈(aaa@bbb.com)...来自Corey Zimmerman Anderson的产品反馈(ccc@ddd.com)...... Andrea Ibarra的产品反馈(eee@fff.com) )
我需要从上面的字符串中提取电子邮件ID。 "来自"的产品内反馈将是静态的,电子邮件ID将始终在括号内,但其间的名称将有所不同。
答案 0 :(得分:3)
由于您拥有的文本非常静态且名称可能不包含()
,因此您可以使用非正则表达式方法:
s = "In-product feedback from Vince (aaa@bbb.com)"
s_clean = s.rsplit('(')[1].strip(')')
print(s_clean)
# 'aaa@bbb.com'
或者反正使用正则表达式:
import re
s = "In-product feedback from Vince (aaa@bbb.com)"
s_clean = re.findall(r'\((.*?)\)', s)[0]
print(s_clean)
# 'aaa@bbb.com'
如果出现多次,您将获得所有电子邮件的列表:
s = "In-product feedback from Vince (aaa@bbb.com)...In-product feedback from Corey Zimmerman Anderson (ccc@ddd.com)...In-product feedback from Andrea Ibarra (eee@fff.com)"
s_clean = re.findall(r'\((.*?)\)', s)
print(s_clean)
# ['aaa@bbb.com', 'ccc@ddd.com', 'eee@fff.com']
答案 1 :(得分:1)
使用以下代码:
import re
r = re.findall(r"\(([^)]+)\)", s)
print(r)
你的字符串中的s。
答案 2 :(得分:0)
试试这个
import re
str = 'In-product feedback from Vince (aaa@bbb.com)'
regex = '(In-product feedback from) ([a-zA-Z ]+) \(([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)\)'
phrase= re.match(regex, str)
print phrase.group(1) # In-product feedback from
print phrase.group(2) # Vince
print phrase.group(3) # aaa@bbb.com