python正则匹配小数
时间: 2023-07-10 12:40:38 浏览: 127
你可以使用Python的re模块中的正则表达式来匹配小数。
以下是一个示例代码:
```python
import re
# 匹配小数的正则表达式
pattern = r'^[+-]?\d+(?:\.\d+)?$'
# 测试用例
test_cases = ['1.23', '-0.5', '123', '-123.456', 'abc']
for test_case in test_cases:
if re.match(pattern, test_case):
print(f'{test_case} 是一个小数')
else:
print(f'{test_case} 不是一个小数')
```
输出结果为:
```
1.23 是一个小数
-0.5 是一个小数
123 不是一个小数
-123.456 是一个小数
abc 不是一个小数
```
正则表达式 `^[+-]?\d+(?:\.\d+)?$` 的含义为:
- `^` 表示匹配字符串的开头
- `[+-]?` 表示可选的正负号
- `\d+` 表示匹配一个或多个数字
- `(?:\.\d+)?` 表示可选的小数部分,其中 `(?:...)` 表示非捕获分组,`\.` 表示匹配小数点,`\d+` 表示匹配一个或多个数字
- `$` 表示匹配字符串的结尾
因此,该正则表达式可以匹配形如 `1.23`、`-0.5`、`123.456`、`+100.0` 等格式的小数。
相关问题
python 正则匹配小数
在Python中,可以使用正则表达式来匹配小数。下面是一个示例代码,演示如何使用正则表达式匹配小数:
```python
import re
# 定义一个正则表达式模式,用于匹配小数
pattern = r'^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$'
# 测试字符串
test_strings = ['3.14', '-0.5', '2.0', '10', '1.23e-4', 'abc']
# 遍历测试字符串
for string in test_strings:
match = re.match(pattern, string)
if match:
print(f"{string} 是一个有效的小数")
else:
print(f"{string} 不是一个有效的小数")
```
运行以上代码,输出结果如下:
```
3.14 是一个有效的小数
-0.5 是一个有效的小数
2.0 是一个有效的小数
10 不是一个有效的小数
1.23e-4 是一个有效的小数
abc 不是一个有效的小数
```
上述代码中,使用了正则表达式模式`^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$`来匹配小数。该模式的解释如下:
- `^`:匹配字符串的开始位置
- `[-+]?`:可选的正负号
- `[0-9]*`:零个或多个数字
- `\.?`:可选的小数点
- `[0-9]+`:至少一个数字
- `([eE][- `$`:匹配字符串的结束位置
如果以上模式匹配成功,则说明字符串是一个有效的小数。
python正则匹配小数和带e的指数
可以使用以下正则表达式来匹配小数和带e的指数:
```python
import re
pattern = re.compile(r'^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$') # 匹配小数和带e的指数
```
这个正则表达式的含义是:
- ^ 表示匹配字符串的开头
- [-+]? 表示可选的正负号
- [0-9]* 表示可选的整数部分
- \.? 表示可选的小数点
- [0-9]+ 表示必选的小数部分
- ([eE][-+]?[0-9]+)? 表示可选的指数部分,其中 [eE] 表示匹配 e 或 E,[-+]? 表示可选的正负号,[0-9]+ 表示必选的指数数字部分
- $ 表示匹配字符串的结尾
使用示例:
```python
match1 = pattern.match('3.1415926')
match2 = pattern.match('1.2e-3')
match3 = pattern.match('3.14e+2')
match4 = pattern.match('3.')
match5 = pattern.match('e+2')
match6 = pattern.match('3.14e')
print(match1) # <re.Match object; span=(0, 9), match='3.1415926'>
print(match2) # <re.Match object; span=(0, 6), match='1.2e-3'>
print(match3) # <re.Match object; span=(0, 7), match='3.14e+2'>
print(match4) # None
print(match5) # None
print(match6) # None
```
阅读全文
相关推荐















