此代码旨在删除所有内容,但保留数字
a = "1.1.1.1"
b = re.sub('[^0-9]', '', a)
但我也希望保留点数。
答案 0 :(得分:2)
不使用正则表达式:
>>> ''.join(c for c in a if c.isdigit() or c == '.')
'1.1.1.1'
>>> a = 'hello.1.number'
>>> ''.join(c for c in a if c.isdigit() or c == '.')
'.1.'
答案 1 :(得分:2)
>>> a='1.1.1.1'
>>> b = re.sub('[^0-9\.]', '', a)
>>> b
'1.1.1.1'
>>> a='comp.languages.python'
>>> b = re.sub('[^0-9.]', '', a)
>>> b
'..'
[]
表示只匹配这些字符。
[^]
表示匹配除了这些字符之外的所有字符。
0-9
是0123456789
.
是。但要小心。因为在[]
之外,它通常用于匹配任何单个字符
答案 2 :(得分:1)
试试
a = 1.1.1.1
b = re.sub('[^\d\.]', '', a)
代替。 0-9
可以替换为\d
,因为它匹配所有数字字符,\.
是必需的,因为.
字符是通配符。