如何在Python中使用正则表达式判断字符串是否仅包含数字和空格

2024-04-24 18:57:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python(使用regex)编写一些脚本,但遇到了以下问题:

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

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

我试着在这里搜索,但我发现的只是如何从字符串中提取数字(以及相反的数字),这并不能帮助我确保所有字符串都只包含数字(由任意数量的空格分隔)。

有人有解决办法吗?

如果有人知道一个包含所有特殊字符的类(例如!$#-)这将是非常好的(因为这样我就可以做[^A-Z][^A-Z][^特殊类]从而得到与任何字符和特殊符号都不匹配的东西-只留下数字和空格(如果我是对的)。


Tags: 字符串脚本数量数字字符regex空格特殊字符
3条回答

基本的正则表达式是

/^[0-9 ]+$/

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

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

你可以试穿一下there

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

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

好吧,我建议不使用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())
...     

相关问题 更多 >