从电话号码字符串中删除不需要的字符

Efr*_*rin 5 python regex

我的目标是让正则表达式代码获取电话号码并删除不需要的字符。

import re
strs = 'dsds +48 124 cat cat cat245 81243!!'
match = re.search(r'.[ 0-9\+\-\.\_]+', strs)

if match:                      
    print 'found', match.group() ## 'found word:cat'
else:
    print 'did not find'
Run Code Online (Sandbox Code Playgroud)

它仅返回:

+48 124 
Run Code Online (Sandbox Code Playgroud)

我如何退还全部电话号码?

Tim*_*ker 5

您要使用sub(),而不是search()

>>> strs = 'dsds +48 124 cat cat cat245 81243!!'
>>> re.sub(r"[^0-9+._ -]+", "", strs)
' +48 124   245 81243'
Run Code Online (Sandbox Code Playgroud)

[^0-9+._ -]否定的角色类。在^这里是有效的-该表达式的意思是:“匹配既不是数字也不是加号,点,下划线,空格或破折号的字符”。

+告知正则表达式引擎,以匹配前面的令牌的一个或多个实例。


Bur*_*lid 5

问题re.sub()是您的最终电话号码字符串中有多余的空格。非正则表达式方式,返回正确的电话号码(不带任何空格):

>>> strs = 'dsds +48 124 cat cat cat245 81243!!'
>>> ''.join(x for x in strs if x.isdigit() or x == '+')
'+4812424581243'
Run Code Online (Sandbox Code Playgroud)