正则表达式【持续总结】
1: 需要匹配的是这样的字符串: 2007-08-29 21:46:20 ..... 424 $PLUGINSDIRioSpecial.ini 中间的数值是大小,期望得到的是什么文件,多大
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |