正则表达式【持续总结】

前端之家收集整理的这篇文章主要介绍了正则表达式【持续总结】前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1:

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

2007-08-29 21:46:20 ..... 424 $PLUGINSDIR\ioSpecial.ini
2014-11-21 10:19:42 ..... 142736 $PLUGINSDIR\modern-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               $PLUGINSDIR\ioSpecial.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

猜你在找的正则表达式相关文章