04如何用正则表达式匹配一个字符串中的所有数字?
问题: 如何用正则表达式匹配一个字符串中的所有数字?
👇 点击展开/折叠 面试背诵模板(建议先背这个)
findall 与 finditer 的选择
re.findall() 直接返回所有匹配结果的列表,适合数据量较小的场景;re.finditer() 返回迭代器,逐个生成 Match 对象,适合处理超大文本或需获取匹配位置(如 span())的场景,内存效率更高。
1 | import re |
匹配浮点数与负数(扩展规则)
业务场景中常需提取完整的数值(包含小数点和负号),需构造复合模式:
1 | # 匹配整数、浮点数(含负号) |
模式对比与常见陷阱
| 模式 | 匹配结果 | 说明 |
|---|---|---|
\d |
每个数字单独匹配('1','2','3') |
未使用量词,仅匹配单个字符 |
\d+ |
连续数字整体匹配('123') |
最常用的整数提取方式 |
\d* |
可能匹配空字符串 | 陷阱:findall 会返回空字符串,需谨慎使用 |
注意:\d 默认匹配 Unicode 数字(如阿拉伯数字 ٣),若只匹配 0-9,应改用 [0-9] 确保 ASCII 数字。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LGQ的博客!