替换除数字之外的一切

时间:2014-07-15 22:56:18

标签: python regex

我有以下字符串:

s = Promo 77

我正在尝试输出“77”。

以下是我正在使用的正则表达式:

>>> re.sub(r'^[0-9]','',s)
'Promo 77'

这里的正确陈述应该是什么?

3 个答案:

答案 0 :(得分:4)

>>> s = 'Promo 77'
>>> "".join(i for i in s if i.isdigit())
'77'

答案 1 :(得分:2)

您只需移动^即可。 r'^[0-9]'匹配字符串的开头,后跟一个数字(不会出现在字符串中)。您希望r'[^0-9]'匹配任何不是数字的字符,或r'\D',它匹配完全相同的字符集。

答案 2 :(得分:1)

s = "Promo 77"
print re.findall("\d+",s)
['77']
print s.split()[-1]
77
re.sub(r'\D', "", s)
77
re.sub(r"[^\d+]","",s)
77