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

时间:2012-08-15 14:55:37

标签: python regex

我有这样的字符串:

Alex Jatt, (alex.jatt@domain.com)

amd我正在尝试使用正则表达式提取电子邮件地址,如下所示:

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

但     print p命令打印(alex.jatt@domain.com)

如何修改此正则表达式以摆脱括号?

5 个答案:

答案 0 :(得分:3)

没有regex解决方案:

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

答案 1 :(得分:3)

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

答案 2 :(得分:3)

通过加入你也可以做到..

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'

答案 3 :(得分:2)

使用前瞻和后视来确保括号在那里,但是为了防止你捕获它们。

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

或者你可以只访问捕获组而不是整个正则表达式。

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

无论哪种方式都可行。

答案 4 :(得分:0)

我认为你在修改代码之前一直在修改代码。

如果我这样做:

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

您想要查看群组:

>>> import re
>>> c="Alex Jatt, (alex.jatt@domain.com)"
>>> p = re.search('\((.*?)\)', c)
>>> print p.groups()[0]
alex.jatt@domain.com