正则表达式匹配小数全解


发布日期 : 2023-04-28 17:46:26 UTC

访问量: 10 次浏览

正则表达式是一种强大的工具,可以用于匹配符合某种特定模式的字符串。
在很多情况下,我们需要对小数进行匹配,比如数据验证,提取文本信息等。
本文将介绍如何使用正则表达式匹配小数。

匹配整数

在正则表达式中,匹配整数非常简单,只需要使用 \d+ 表示匹配一个或多个数字即可。

示例代码:

import re

pattern = re.compile(r'\d+')
result = pattern.findall('123 456 789')
print(result) # ['123', '456', '789']

在上述示例中,我们使用 re.compile() 方法编译了一个正则表达式规则。
\d+ 表示匹配一个或多个数字, r 前缀用于指定字符串为原始字符串,避免 \ 被转义。

使用 pattern.findall() 方法查找所有符合规则的字符串,并返回一个列表。

匹配小数

对于匹配小数,我们可以使用 \d+\.\d+ 表示匹配小数点前后至少一个数字的小数。

示例代码:

import re

pattern = re.compile(r'\d+\.\d+')
result = pattern.findall('1.234 5.678 9.0 10.') # 匹配末尾小数点
print(result) # ['1.234', '5.678', '9.0']

在上述示例中,我们使用 \. 表示匹配小数点,因为小数点在正则表达式中属于特殊字符,需要用 \ 进行转义。

支持匹配负数

除了正数小数,我们还可能需要匹配负数小数。对于此类情况,我们可以使用 -?\d+\.\d+ 表示匹配小数点前后至少一个数字的小数,并且支持负数。

示例代码:

import re

pattern = re.compile(r'-?\d+\.\d+')
result = pattern.findall('1.234 -5.678 -9.0 10. -2.6') # 匹配末尾小数点
print(result) # ['1.234', '-5.678', '-9.0', '10.', '-2.6']

在上述示例中,我们使用 -? 表示匹配负号, ? 表示负号可有可无。

支持匹配科学计数法

在某些情景下,可能需要匹配科学计数法表示的小数,比如 1.0e-2 表示 0.01
对于此类情况,我们可以使用 -?\d+(\.\d+)?([eE][+-]?\d+)? 表示匹配小数点前后至少一个数字的小数,并且支持负数和科学计数法表示的小数。

示例代码:

import re

pattern = re.compile(r'-?\d+(\.\d+)?([eE][+-]?\d+)?')
result = pattern.findall('1.234 -5.678 9.0e-2 10. -2.6E3') # 匹配末尾小数点
print(result) # ['1.234', '-5.678', '9.0e-2', '10.', '-2.6E3']

在上述示例中,我们使用 (\.\d+)? 表示匹配小数点及其后面的数字, ([eE][+-]?\d+)? 表示匹配科学计数法表示的小数, [eE] 表示匹配字母 Ee[+-]?\d+ 表示匹配可有可无的正负号和一个或多个数字。

结论

本文介绍了如何使用正则表达式匹配小数,包括整数、正数小数、负数小数以及科学计数法表示的小数。
通过本文的介绍,相信读者已经可以轻松应对小数匹配的需求。在实际应用中,可以根据具体情况调整匹配规则,达到更精准的匹配效果。