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

正则表达式【持续总结】

发布时间:2020-12-14 01:29:37 所属栏目:百科 来源:网络整理
导读:1: 需要匹配的是这样的字符串: 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 中间的数值是大小,期望得到的是什么文件

1:

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

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了


参考:

http://zhidao.baidu.com/link?url=pPC8OvYqEGWGzExVzwKVbCg0TEQxrnhALzsu2Q0qOpYS8RVlyDKLqcnj-I6rMbbXrjgSaC_L1KHV1l9p0nQxGq

http://www.oschina.net/question/175954_67442

(编辑:李大同)

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

    推荐文章
      热点阅读