[英]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.