我有串這樣的:如何在Python上使用regex刪除括號?
Alex Jatt, ([email protected])
AMD我試圖提取使用正則表達式,像這樣只有電子郵件地址:
p = re.search('\((.*?)\)', c)
但 打印p命令打印([email protected] .com)
如何修改這個正則表達式來消除括號?
我有串這樣的:如何在Python上使用regex刪除括號?
Alex Jatt, ([email protected])
AMD我試圖提取使用正則表達式,像這樣只有電子郵件地址:
p = re.search('\((.*?)\)', c)
但 打印p命令打印([email protected] .com)
如何修改這個正則表達式來消除括號?
re.search
讓你拉匹配組出來的正則表達式匹配。在你的情況下,你會想用p.group(1)
來提取第一個加括號的匹配,這應該是你有正則表達式的電子郵件。
使用前視和後視以確保圓括號在那裏,但是爲了防止您捕捉它們。您可以訪問捕獲組而不是整個正則表達式。
p = re.search('\((.*?)\)', c).group(1)
任何一種方式都可以。
給予好評的超前/回顧後。 – kindall 2012-08-15 15:16:55
我想你在粘貼之前已經改變了代碼。
如果我做的:
>>> import re
>>> c="Alex Jatt, ([email protected])"
>>> p = re.search('\((.*?)\)', c)
>>> print p
<_sre.SRE_Match object at 0x10bd68af8>
你想看看組:
>>> import re
>>> c="Alex Jatt, ([email protected])"
>>> p = re.search('\((.*?)\)', c)
>>> print p.groups()[0]
[email protected]
無regex
解決方案:
>>> strs="Alex Jatt, ([email protected])"
>>> strs.split(',')[1].strip().strip("()")
'[email protected]'
+1爲低科技方法 – Levon 2012-08-15 15:10:37
隨着加入也可以做到這一點..
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, [email protected]'
謝謝,似乎我需要閱讀有關組。 – 2012-08-15 15:08:14
這是一個很好的資源:http://www.regular-expressions.info/brackets.html – murgatroid99 2012-08-15 15:09:00