我怎么能告诉一个字符串是否只包含使用正则表达式的python中的数字和空格

时间:2013-12-12 12:53:38

标签: python regex numbers spaces digits

我正在尝试在python中编写一些脚本(使用正则表达式),我遇到以下问题:

我需要确保字符串只包含数字和空格,但它可以包含任意数量的数字。

意味着它应该与字符串匹配: “213”(一个数字),“123 432”(两个数字),甚至“123 432 543 3 235 34 56 456 456 234 324 24”(十二个数字)。

我试着在这里搜索,但我找到的只是如何从字符串中提取数字(和相反的情况) - 这并没有帮助我确保天气中的所有字符串只包含数字(由任意数量的空格分隔)。 / p>

有没有人有解决方案?

如果有人知道包含所有特殊字符的类(例如!$#_ - ),那就太棒了(因为那时我可以做[^ AZ] [^ az] [^ special-类]因此得到的东西与任何字符和特殊符号都不匹配 - 只留下数字和空格(如果我是正确的话)。

3 个答案:

答案 0 :(得分:9)

此代码将检查字符串是否仅包含数字和空格字符。

if re.match("^[0-9 ]+$", myString):
    print "Only numbers and Spaces"

答案 1 :(得分:4)

基本正则表达式为

/^[0-9 ]+$/

但是,如果您的字符串只包含空格,则也可以。要检查至少有一个号码,您需要以下

/^ *[0-9][0-9 ]*$/

您可以在there

上试用

答案 2 :(得分:0)

好吧,我建议不使用regex的东西:

>>> s = "12a 123"
>>> to_my_linking = lambda x: all(var.isdigit() for var in x.split())
>>> to_my_linking(s)
False
>>> s = "1244 432"
>>> to_my_linking(s)
True
>>> a = "123 432 543 3 235 34 56 456 456 234 324 24"
>>> to_my_linking(a)
True

如果您正在工作,lambda只是制作单行功能的简单方法。如果我们使用def编写它,那么它将如下所示:

>>> def to_my_linking(number_sequence):
...     return all(var.isdigit() for var in number_sequence.split())
...