簡體   English   中英

如何在Python上使用正則表達式刪除括號?

[英]How to remove parenthesis using regex on Python?

我有這樣的字符串:

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

我想嘗試使用正則表達式提取電子郵件地址,如下所示:

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

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

如何修改此正則表達式以擺脫括號?

沒有regex解決方案:

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

re.search允許您從正則表達式匹配中提取匹配的組。 在您的情況下,您可能希望使用p.group(1)來提取第一個帶括號的匹配,該匹配應該是您擁有的正則表達式中的電子郵件。

加入也可以做到..

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'

使用前瞻和后視來確保括號在那里,但是為了防止你捕獲它們。

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

或者您可以只訪問捕獲組而不是整個正則表達式。

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

無論哪種方式都可行。

我認為你在修改代碼之前一直在改變代碼。

如果我做:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM