如何在Python上使用正则表达式删除括号?

如何在Python上使用正则表达式删除括号?,python,regex,Python,Regex,我有这样的字符串: Alex Jatt, (alex.jatt@domain.com) amd我正在尝试使用正则表达式提取电子邮件地址,如下所示: p = re.search('\((.*?)\)', c) 但是 打印p命令打印(alex。jatt@domain.com) 如何修改此正则表达式以除去括号?使用“向前看”和“向后看”来确保括号在那里,但防止捕获它们 p = re.search('(?<=\().*?(?=\))', c) 两种方法都可以 我想在粘贴到这里之前,您已经更改

我有这样的字符串:

Alex Jatt, (alex.jatt@domain.com)
amd我正在尝试使用正则表达式提取电子邮件地址,如下所示:

p = re.search('\((.*?)\)', c)
但是 打印p命令打印(alex。jatt@domain.com)


如何修改此正则表达式以除去括号?

使用“向前看”和“向后看”来确保括号在那里,但防止捕获它们

p = re.search('(?<=\().*?(?=\))', c)

两种方法都可以

我想在粘贴到这里之前,您已经更改了代码

如果我这样做:

>>> import re
>>> c="Alex Jatt, (alex.jatt@domain.com)"
>>> p = re.search('\((.*?)\)', c)
>>> print p
<_sre.SRE_Match object at 0x10bd68af8>

没有
regex
解决方案:

>>> strs="Alex Jatt, (alex.jatt@domain.com)"
>>> strs.split(',')[1].strip().strip("()")
'alex.jatt@domain.com'

re.search
允许您从正则表达式匹配中提取匹配的组。在您的情况下,您需要使用
p.group(1)
提取第一个括号中的匹配项,该匹配项应该是正则表达式中的电子邮件。

使用join也可以这样做

a= ''.join(c for c in a if c not in '()')
或者使用正则表达式

In[20]: import re

In[21]: name= re.sub('[()]', '', a)

In [22]: name
Out[22]: 'Alex Jatt, alex.jatt@domain.com'
a= ''.join(c for c in a if c not in '()')
In[20]: import re

In[21]: name= re.sub('[()]', '', a)

In [22]: name
Out[22]: 'Alex Jatt, alex.jatt@domain.com'