随笔 - 1762  文章 - 0  评论 - 109  阅读 - 431万

Python 正则表达式匹配数字及字符串中的纯数字

Python 正则表达式匹配数字

电话号码:\d{3}-\d{8}|\d{4}-\d{7}

 QQ号:[1-9][0-9]{4,}

中国邮政编码:[1-9]\d{5}(?!\d)
身份证:\d{15}|\d{18}
ip地址:\d+\.\d+\.\d+\.\d+

 [1-9]\d*      正整数
-[1-9]\d*   负整数
-?[1-9]\d* 整数
[1-9]\d*|0  非负整数
-[1-9]\d*|0   非正整数
[1-9]\d*\.\d*|0\.\d*[1-9]\d*([19]\d\.\d|0\.\d[19]\d)  负浮点数
-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  浮点数

匹配价格,并输出平均价格

1
2
3
4
5
6
7
8
import re
price='25.34-34.55'
test=re.compile(r'[1-9]\d*\.\d*|0\.\d*[1-9]|[1-9]\d*').findall(price)[0]
test2=re.compile(r'-[1-9]\d*\.\d*|-0\.\d*[1-9]|-[1-9]\d*').findall(price)[0]
i=float(test)
x=-float(test2)
r=(x+i)/2
print r

知识点扩展:python 正则表达式找出字符串中的纯数字

1、简单的做法

1
2
3
>>> import re
>>> re.findall(r'\d+', 'hello 42 I'm a 32 string 30')
['42', '32', '30']

然而,这种做法使得字符串中非纯数字也会识别

1
2
>>> re.findall(r'\d+', "hello 42 I'm a 32 str12312ing 30")
['42', '32', '12312', '30']

2、识别纯数字

如果只需要用单词边界( 空格,句号,逗号) 分隔的数字,你可以使用 \b

1
2
3
4
5
6
>>> re.findall(r'\b\d+\b', "hello 42 I'm a 32 str12312ing 30")
['42', '32', '30']
>>> re.findall(r'\b\d+\b', "hello,42 I'm a 32 str12312ing 30")
['42', '32', '30']
>>> re.findall(r'\b\d+\b', "hello,42 I'm a 32 str 12312ing 30")
posted on   一杯明月  阅读(1146)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
历史上的今天:
2021-10-14 GeForce GTX 650 Ti支持的最大分辨力,看显示器支持的最大分辨率
2020-10-14 tensorflow里面name_scope, variable_scope等如何理解?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示