【发布时间】:2013-02-15 04:13:48
【问题描述】:
首先,我是正则表达式的新手。但到目前为止,我爱上了他们。我正在使用正则表达式从我从渲染引擎获得的图像文件名中提取信息。到目前为止,这个正则表达式运行良好......
_([a-z]{2,8})_?(\d{1,2})?(\.|_)(\d{3,10})\.([a-z]{2,6})$
如果我对文件名使用 split() 方法,例如...
image_file_name_ao.0001.exr
我回来了我可以使用的不错的小清单....
['image_file_name', 'gi', None, '.', '0001', 'exr', '']
我唯一担心的是它总是最后返回一个空字符串。无论我如何更改或操作正则表达式,它总是在列表末尾给我一个空字符串。我完全可以忽略它并继续前进,但我的问题是我的正则表达式做错了什么,或者我能做些什么让它不通过最后的空字符串?感谢您的宝贵时间。
【问题讨论】:
-
请看我对您问题的回答。但是,您为什么要使用
re.split而不是像 Katzwinkel 的回答那样捕获组? - 顺便说一句,你为什么不分组捕获(\d{1,2})?和最后一个点之前的潜在取消标记?