【发布时间】:2014-09-27 06:13:13
【问题描述】:
此代码旨在删除除留下数字之外的所有内容
a = "1.1.1.1"
b = re.sub('[^0-9]', '', a)
但我也想保留点。
【问题讨论】:
-
你想要 b 到 a 的安全版本,还是需要将 a 拆分成一个数组,例如b=[1,1,1,1] ?
标签: python string python-2.7
此代码旨在删除除留下数字之外的所有内容
a = "1.1.1.1"
b = re.sub('[^0-9]', '', a)
但我也想保留点。
【问题讨论】:
标签: python string python-2.7
试试
a = 1.1.1.1
b = re.sub('[^\d\.]', '', a)
相反。 0-9 可以替换为 \d,因为它匹配所有数字字符,而 \. 是必需的,因为 . 字符是通配符。
【讨论】:
>>> 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
. 是。但要小心。因为在[]之外,它通常用于匹配任何单个字符
【讨论】:
[...]) 内转义 .,因为特殊字符在字符类中失去了意义。
不使用正则表达式:
>>> ''.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.'
【讨论】: