主页 > 教程合集 > 工具推荐 >

Python正则表达式匹配整数或小数实例

时间:2019-09-29 阅读:0

实例:在测试过程中需要分析log文件,筛选有用信息。

Python正则表达式匹配整数或小数实例

已知字符串test_str中包含整数、小数、IP地址格式的数字及英文单词、特殊字符等,要求用正则表达式取出所有整数和小数。用python语言实现代码如下:


#!/usr/bin/python
import re
test_str = '''type logfile
[ 8] local 81.33 port 12345 connected with 82.33.44.250 port 55611
'''
ret1 = re.findall(r'([\d+\.]+)', test_str) #会匹配到IP地址
ret2 = re.findall(r'[^\.\d](\d+\.?\d+)[^\.\d]', test_str)
ret3 = re.findall(r'[^\.\d](\d+\.\d+|\d+)[^\.\d]', test_str)
print(ret1)
print(ret2)
print(ret3)
 

运行结果及分析

Python正则表达式匹配整数或小数实例

· 只有ret3能精确匹配到所有整数和小数。

· ret1匹配结果包括IP地址'82.33.44.250',因为[\d+.]+方括号外的加号表示匹配一次或多次方括号内的字符,小数点可能匹配多次,不符合要求,所以ret2用.?表示匹配小数点0次或1次;

· ret2匹配结果缺少整数8,(\d+.?\d+)圆括号前后都有[^.\d]表示获取结果前后都不能有小数点或数字,但圆括号内\d+出现了两次就不能匹配个位数,匹配不全;

代码里用到的正则表达式符号释义如下:


(pattern) 匹配pattern并获取这一匹配。要匹配圆括号字符,请使用\(\)
. 任何单个字符
\ 转义
\. 字符点
\d 匹配一个数字字符,0至9之间的数字,等价于[0-9]
| 或
? 匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”。等价于匹配长度{0,1}

[^a-z] 匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。
[^xyz] 匹配非xyz的任意字符。例如,“[^abc]”可以匹配“plain”中的“plin”任一字符。
 

本站所有资源均在Resource资源站有分享,你可以点击 >>> Resource 进入资源站自助提取,也可以扫描以下店铺二维码直接选购,自动极速发货

余斗微信二维码

扫描微信加好友咨询
了解更多

余斗淘宝店铺二维码

淘宝扫描二维码购买
自动发货

余斗余斗
  • 版权声明:原创文章由发表在工具推荐分类下,2019-09-29最后更新,转载注明出处。

相关推荐

返回顶部