最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何利用正则表达式提取字符串里的数字内容
时间:2026-07-14 11:18:52 编辑:袖梨 来源:一聚教程网
正则提取数字需按场景选模式:d+提取连续数字块;-?d+.?d*兼顾带符号小数但需后处理;-?d+.d+严格匹配浮点数;结合上下文用捕获组(如ID、版本、金额)更精准。
正则表达式提取字符串中的数字,关键在于根据需求选择合适的模式:纯整数、带符号数字、小数、科学计数法,或连续数字片段。不同场景需区别对待,不能一概而用 d+。
提取所有连续的数字(最常用)
适用于从文本中捞出所有独立的数字块,比如“订单号:12345,金额:¥67.89,折扣-5%”里想拿到 12345、67、89、5。
- 模式:
d+—— 匹配一个或多个连续数字字符 - 注意:
d等价于[0-9],不匹配小数点、负号或小数部分 - 示例(Python):
import re<br>text = "温度23.5℃,湿度-45%,编号A123B456"<br>re.findall(r'd+', text) # → ['23', '5', '45', '123', '456']
提取完整数字(含负号、小数)
当需要保留数字的原始语义(如 -12.34 或 3.14159),就不能只靠 d+,得覆盖符号和小数点。
- 模式:
-?d+.?d*—— 支持可选负号、至少一位整数、可选小数点及后续数字 - 更严谨写法(避免匹配孤立小数点):
-?d+.?d+|-.d+|.d+,但通常用-?d+.?d*并过滤空结果更实用 - 推荐模式(兼顾常见情况):
-?d+.?d*(?(用负向先行断言排除结尾为小数点的情况) - 实际建议:用
-?d+.?d*+ 后处理(如float(x)尝试转换,跳过无效项)
提取浮点数(严格匹配小数格式)
若明确要小数(如价格、坐标),需确保小数点前后至少有一位数字。
- 模式:
-?d+.d+—— 匹配带小数点的标准浮点数,如 3.14、-0.001 - 补充支持整数形式(如 5 和 5.0 都算数字):
-?d+.?d+,但会误匹配 "123."(末尾小数点) - 稳妥写法:
-?(?:d+.d+|d+.|.d+|d+),再用逻辑过滤掉纯小数点或空段 - 多数语言有现成数字解析函数(如 Python 的
ast.literal_eval或float()),正则提取后建议转类型校验
按位置或上下文精准提取
有时数字有固定位置或前缀(如 “ID: 10086”、“版本 v2.3.1”),可用捕获组提高准确性。
- ID 提取:
r'ID:s*(d+)'→ 只取冒号后的数字 - 版本号提取:
r'v(d+.d+.d+)'→ 捕获形如 v1.2.3 的完整版本 - 金额提取:
r'¥(d+(?:.d+)?)'→ 匹配 ¥ 后面的数字(含小数) - 使用
re.search()或re.finditer()获取 group(1),比全量findall更可控
相关文章
- 时间码主题随系统设定 07-17
- PR帧数切换时间码秘技 07-17
- EXCEL工程资料目录制作 07-17
- 云缨巡街北北北砂下载 - 漫画天堂网址版本 07-17
- 什么是女孩子哭着哭着哭到一半掏出镜子表情包 07-17
- 工程宝企业云盘存储资料指南 07-17