python

时间:2016-07-18 09:07:15

标签: python regex

我有以下格式的字符串:

Vince的产品反馈(aaa@bbb.com)...来自Corey Zimmerman Anderson的产品反馈(ccc@ddd.com)...... Andrea Ibarra的产品反馈(eee@fff.com) )

我需要从上面的字符串中提取电子邮件ID。 "来自"的产品内反馈将是静态的,电子邮件ID将始终在括号内,但其间的名称将有所不同。

3 个答案:

答案 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