【发布时间】:2015-04-05 23:56:09
【问题描述】:
我的目标是从文件名中获取电视节目的季节和剧集。我有以下正则表达式:
(\d{1,2})([^\d]{1,2}(\d{1,2}))+.*
仅包含一集的文件的结果与预期一致。第一个匹配组包含季节编号,第三组包含剧集编号。但我对包含多个剧集的文件有疑问。它总是只匹配一个组与剧集(最后一个),而不是全部。
也许例子胜过千言万语:
S01E01.HDTV.x264-LOL.mp4 Result: 01, 01
S01E01E02.HDTV.x264-LOL.mp4 Result: 01, 02 Expected: 01, 01, 02
S01E01-02.HDTV.x264-LOL.mp4 Result: 01, 02 Expected: 01, 01, 02
S01E01-E02.HDTV.x264-LOL.mp4 Result: 01, 02 Expected: 01, 01, 02
01x01 Lorem ipsum.avi Result: 01, 01
01x01-02 Lorem ipsum.avi Result: 01, 02 Expected: 01, 01, 02
1x1 Lorem ipsum.avi Result: 1, 1
1x1-2 Lorem ipsum.avi Result: 1, 2 Expected: 1, 1, 2
交互式示例是here。
我认为问题在于我的(错误)假设,即([^\d]{1,2}(\d{1,2}))+ 中的+ 将导致多个组匹配。
顺便说一句,我使用的是 .NET,但我想这应该没关系。
【问题讨论】: