我想创建一个正则表达式来匹配电视节目文件格式中所有可能的剧集编号格式。
这里的相关帖子,仅匹配以下格式:S1E1,S11E1,S1E11,S11E11。
我想匹配以下格式:episode01、episode 01、episode1、episode 1、e01、e1、e0102、e01-02、e01e02、e01-e02、e111、e001002、e1-e2、e001-e002。
我目前有这个正则表达式,它匹配大多数但不是全部示例列表。
(?:(?<=e)|(?<=episode)|(?<=episode[\.\s]))(\d{1,2})|((?<=-)\d{1,2})
Run Code Online (Sandbox Code Playgroud)
它不匹配的是当有两集紧接着另一集e0102应该匹配01和时02。
您可以在此处找到包含测试用例的正则表达式示例
根据您的评论,我做了以下假设:
因此,请尝试以下操作:
e(?:pisode)?\s*(\d{1,3}(?!\d)|\d\d\d??)(?:-?e?(\d{1,3}))?(?!\d)
Run Code Online (Sandbox Code Playgroud)
这是一个在线演示。您会注意到我添加了更多示例来展示上述假设。
e(?:pisode)?\s*- 匹配 'e'或'episode' 以及 0+ 尾随空白字符;(\d{1,3}(?!\d)|\d\d\d??)- 第一个捕获组捕获 1-3 个数字(如果后面没有任何其他数字或两个数字);(?:-?e?(\d{1,3}))?- 可选的非捕获组,带有嵌套的第二个捕获组,寻找可选的连字符和带有尾随数字 (1-3) 的文字“e”;(?!\d)- 没有留下尾随数字。| 归档时间: |
|
| 查看次数: |
369 次 |
| 最近记录: |