python - 正则表达式检查字符串是否为数字

标签 python regex string

我有一个我认为是数字的值,但我用来确认该值是数字的正则表达式失败了。

我不确定这是值的错误还是 RegEx 的错误,因为这个 RegEx 在过去的案例中对我有用。

regnumber = re.compile(r"(\d),(\d) | (\d)")

print("final weight:", weight)

if regnumber.search(weight):
    print("weight = an int")

else:
    print("weight does not = int")

这段代码产生:

final weight: 7088                   
weight does not = int

有人可以向我解释为什么我的 RegEx 失败或者为什么它不是数字吗?

谢谢。

最佳答案

整数(整数)是一个或多个数字的序列。所以:

re.compile(r'\d+')

但在那种情况下你不需要正则表达式,一个简单的 str.isdigit() 就足够了:

if <b>weight.isdigit()</b>:
    print("weight = an int")
else:
    print("weight does not = int")

一个十进制数,可以用下面的正则表达式匹配:

re.compile(r'\d+(?:,\d*)?')

所以你可以检查输入:

regnumber = re.compile(r'\d+(?:,\d*)?')

print("final weight:", weight)
if regnumber.match(weight):
    print("weight = a number")
else:
    print("weight does not = number")

请注意,正则表达式将查找任何 子序列。所以 'foo123,45bar' 也会匹配。您可以使用 ^$ anchor 强制完全匹配:

regnumber = re.compile(r'^\d+(?:,\d*)?$')

print("final weight:", weight)
if regnumber.match(weight):
    print("weight = a number")
else:
    print("weight does not = number")

@chris85说:您可以将正则表达式中的 , 替换为 [,.] 以允许将点 (.) 用作小数点

关于python - 正则表达式检查字符串是否为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44506983/

相关文章:

c - 是否有 C 函数将以 X 为基数的数字字符串转换为以 Y 为基数的字符串?

c++ - 如何传递字符串或类似于结构或对象名称的内容?

javascript - 正则表达式排除具有奇怪 URL 的链接

python - 获取括号内的字符串

python - 带有缺失值的 Numpy 掩码输入数据

python - 如何通过替换字符来更改文件名?

python - python中使用正则表达式替换特殊字符

javascript - 使用 jQuery 从 URL 获取 YouTube 视频 ID

string - 使用Join-Path而不是字符串连接的好处

python - 在Python中禁止执行compute_resilience函数