用正则表达式判断是小数或者整数
时间: 2023-09-03 21:15:19 浏览: 106
可以使用如下正则表达式:
```
^-?\d+(\.\d+)?$
```
该正则表达式的含义如下:
- `^` 表示开头
- `-?` 表示负号可有可无
- `\d+` 表示至少一个数字
- `(\.\d+)?` 表示小数部分,其中 `\.` 表示小数点,`\d+` 表示至少一个数字,`?` 表示该部分可有可无
- `$` 表示结尾
该正则表达式可以匹配如下字符串:
- `123`:整数
- `-456`:负整数
- `0.789`:小数
- `-0.123`:负小数
- `1.`:整数加小数点
- `-2.`:负整数加小数点
可以使用 Python 的 re 模块进行测试,示例代码如下:
```python
import re
pattern = r'^-?\d+(\.\d+)?$'
# 匹配整数
print(re.match(pattern, '123')) # <re.Match object; span=(0, 3), match='123'>
print(re.match(pattern, '-456')) # <re.Match object; span=(0, 4), match='-456'>
print(re.match(pattern, '0')) # <re.Match object; span=(0, 1), match='0'>
print(re.match(pattern, '+789')) # None
print(re.match(pattern, '1.')) # <re.Match object; span=(0, 2), match='1.'>
# 匹配小数
print(re.match(pattern, '0.789')) # <re.Match object; span=(0, 5), match='0.789'>
print(re.match(pattern, '-0.123')) # <re.Match object; span=(0, 6), match='-0.123'>
print(re.match(pattern, '1.23E-4')) # None
print(re.match(pattern, '3.1415926')) # <re.Match object; span=(0, 9), match='3.1415926'>
print(re.match(pattern, '2.')) # <re.Match object; span=(0, 2), match='2.'>
```
阅读全文