You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Regex有条件忽略子串并匹配目标内容

解决方案:提取视频核心标识的正则表达式

针对你给出的两个路径字符串,我们可以构建一个精准的正则表达式,将包含作品名+季集/年份的核心子串捕获到Group 1中,同时自动忽略路径前缀、网站标记、画质编码等无关内容。

正则表达式设计思路

我们需要匹配的核心模式是作品名(允许字母、数字、空格、点)+ 标准季集格式(SxxExx),同时跳过路径中所有无关的前缀和后缀内容:

  • 用非贪婪匹配.*?跳过路径开头的无关部分
  • 捕获组()包裹核心内容,确保只提取我们需要的部分
  • 季集部分用S\d{2}E\d{2}匹配两位数字的季号和集号(兼容大部分剧集命名规范)

最终正则表达式

.*?([A-Za-z][A-Za-z0-9 .]*S\d{2}E\d{2})

Python 3 代码示例

import re

# 测试字符串
str1 = "Downloads/ Sherlock - Season 03/Sherlock.S03E02.SD.DVD-The.Sign.of.Three.mkv"
str2 = "Downloads/[ www.TorrentDay.com ] - Spy .2011.S01E01.HDTV.XviD-W4F/spy.avi"

# 正则模式
pattern = r".*?([A-Za-z][A-Za-z0-9 .]*S\d{2}E\d{2})"

# 处理第一个字符串
match1 = re.search(pattern, str1)
if match1:
    print("String 1 捕获结果:", match1.group(1))  # 输出: Sherlock.S03E02

# 处理第二个字符串
match2 = re.search(pattern, str2)
if match2:
    print("String 2 捕获结果:", match2.group(1))  # 输出: Spy .2011.S01E01

正则说明

  • .*?:非贪婪匹配任意字符,直到找到核心内容的起始位置,避免过度匹配
  • [A-Za-z]:确保核心内容以字母开头,过滤路径中的符号、数字前缀
  • [A-Za-z0-9 .]*:匹配作品名的剩余部分,支持包含空格、点、数字的命名(比如Spy .2011)
  • S\d{2}E\d{2}:精准匹配两位数字的季集格式(如S03E02、S01E01)

这个方案可以兼容你给出的两种路径结构,同时具备一定的扩展性,能适配大部分类似的剧集命名规范。

内容的提问来源于stack exchange,提问作者Pointo Senshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:05:54