正则表达式【持续总结】

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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值