{
    分享网正式开通,我们为大家提供免费资源,欢迎大家踊跃投稿!

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

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

已知字符串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)
 

运行结果及分析

· 只有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”任一字符。
 
资源均来自第三方,谨慎下载,前往第三方网站下载


米微资源分享网 , 版权所有丨本站资源仅限于学习研究,严禁从事商业或者非法活动!丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python正则表达式匹配整数或小数实例
喜欢 ()分享 (0)