regex 如何使正则表达式匹配所有可能的插曲编号从电视节目文件格式?[副本]

q9yhzks0  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(80)

此问题已在此处有答案

Regex for matching season and episode(5个答案)
11个月前关闭。
这篇文章是编辑并提交审查10天前.
我想创建一个正则表达式,它可以匹配电视节目文件格式中所有可能的剧集编号格式。
相关的帖子here,仅匹配以下格式:S1E1,S11E1,S11E11,S11E11.
我想匹配以下格式:episode01,episode01,episode1,episode 1,e01,e1,e01-02,e01-02,e01e02,e01-e02,e111,e001002,e1-e2,e001-e002.
我目前有这个正则表达式,它匹配大多数但不是所有的例子列表。

(?:(?<=e)|(?<=episode)|(?<=episode[\.\s]))(\d{1,2})|((?<=-)\d{1,2})

它不匹配的是当有两个情节直接在另一个e0102应该匹配0102之后。
您可以找到带有测试用例here的正则表达式示例

8i9zcol2

8i9zcol21#

根据你的评论,我做了以下假设:

  • 剧集编号永远不会超过三位数;
  • 因此,当其意味着是一系列剧集时,剧集串将具有1-3位46;
  • 从来没有一个5位数的整数,假设相同的填充将用于一系列剧集中的两个数字;
  • 这意味着46位数的长度需要平均分割。

因此,请尝试以下操作:

e(?:pisode)?\s*(\d{1,3}(?!\d)|\d\d\d??)(?:-?e?(\d{1,3}))?(?!\d)

Here是一个在线演示。您会注意到我添加了更多的示例来说明上述假设。

  • e(?:pisode)?\s*-将'e''episode'与0+尾随空格字符匹配;
  • (\d{1,3}(?!\d)|\d\d\d??)-第一个捕获组,如果后面没有任何其他数字两位数字,则捕获1-3位数字;
  • (?:-?e?(\d{1,3}))?-一个可选的非捕获组,带有一个嵌套的第二捕获组,用于查找可选的连字符和带有尾随数字(1-3)的文字'e';
  • (?!\d)-没有留下尾随数字。

相关问题