我想匹配电话号码,并返回整个电话号码,但只返回数字.这是一个例子:
(555)-555-5555
555.555.5555
Run Code Online (Sandbox Code Playgroud)
但我想使用正则表达式只返回:
5555555555
Run Code Online (Sandbox Code Playgroud)
但是,由于某种原因,我无法获得要返回的数字:
import re
phone_number='(555)-555-5555'
regex = re.compile('[0-9]')
r = regex.search(phone_number)
regex.match(phone_number)
print r.groups()
Run Code Online (Sandbox Code Playgroud)
但由于某种原因它只打印一个空元组?我在这里失踪的显而易见的事情是什么?谢谢.
由于您没有任何捕获组,因此结果为空,请参阅文档以获取详细信息.
您应该将其更改为group(),现在您将获得第一个数字作为匹配.但这不是你想要的,因为引擎在遇到非数字字符时停止并将匹配返回到那里.
您只需删除所有非数字字符:
re.sub('[^0-9]', '', '(555)-555-5555')
Run Code Online (Sandbox Code Playgroud)
范围0-9被否定,因此正则表达式匹配任何不是数字的东西,然后用空字符串替换它.