加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间:2020-12-13 22:24:23 所属栏目:百科 来源:网络整理
导读:需要匹配的是这样的字符串: 2007-08-29 21:46:20 ..... 424 $PLUGINSDIRioSpecial.ini 2014-11-21 10:19:42 ..... 142736 $PLUGINSDIRmodern-wizard.bmp 2014-11-21 10:19:48 ..... 213711 $_8_Default.cupf 中间的数值是大小,期望得到的是什么文件,多

需要匹配的是这样的字符串:

2007-08-29 21:46:20 ..... 424 $PLUGINSDIRioSpecial.ini
2014-11-21 10:19:42 ..... 142736 $PLUGINSDIRmodern-wizard.bmp
2014-11-21 10:19:48 ..... 213711 $_8_Default.cupf

中间的数值是大小,期望得到的是什么文件,多大


python脚本:

if __name__ == "__main__":
	eachSizePattern = re.compile(ur'd{4}-d{2}-d{2}s+d{2}:d{2}:d{2}s+.*s+(d+)s+.*(.*.w+)')
	testString = '2007-08-29 21:46:20 .....          424               $PLUGINSDIRioSpecial.ini'
	match = eachSizePattern.search(testString)
	fileName = '%s' %(match.group(2))
	fileSize = int(match.group(1))
	print fileName + ','+str(fileSize)

分析:

001:re.compile(ur

这里边的u表示unicode,r表示不用再加转义字符了

002:d{4}-d{2}-d{2}很简单,匹配那个日期

003:s+匹配不包含空白符的字符串,d{2}:d{2}:d{2}s+就不多说了

004:.* 匹配任意数量的不包含换行的字符,此时用来过滤那么多的点;s+匹配之后的空格

005:(d+)匹配多个数字,这样可以得到那个数字;s+匹配之后的空格

006:.* 匹配路径

007:(.*.w+) 匹配:任意字符串 或者点 或者 (>=1个的字母或数字或下划线或汉字)

为什么我们要的文件名字是group(2)?数字是group(1)呢?

因为:

整个正则表达式匹配到的会复制给group()或者说是group(0)

我们正则表达式里边的小括号括上的表示需要获取的,数字那个(d+)是第一个,名字那个(.*.w+)是第二个

因此接着group(0),它们就是1和2了



用正则表达式判断字符串是不是IP地址:

r'^([1-9]d?|1d{2}|2[0-4]d|25[0-5]).([1-9]?d|1d{2}|2[0-4]d|25[0-5]).([1-9]?d|1d{2}|2[0-4]d|25[0-5]).([1-9]?d|1d{2}|2[0-4]d|25[0-5])$'

这个匹配的是ABCDE网络,包括里边的回路测试地址、多播地址等等

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读