我正在尝试匹配以下字符串(工作室)-电影(年份)-段号
字符串必须有以下的order,然后是薄膜,然后是可选的年份,最后是可选的(分段+数字)
工作室和电影必须是当前年份,可以选择分段类型(大小写不敏感),如果现在必须后面跟着一个数字从1到8段incle的类型
regex应匹配以下字符串(制片厂)
我尝试了下面的Regex
\((?P<STUDIO>.+)\) - (?P<TITLE>.+) \((?P<YEAR>\d{4})\)?( - (?P<SEGMENT>(?i)(cd|disc|disk|dvd|part|pt|scene) \b[1-8]\b))?
它给出了字符串(制片厂)- (1994) - cd 3的如下内容:
命名群
和(制片公司)-电影(1994年)
命名群
所以它的工作是因为段是可选的。
但是,当我使用以下正则表达式使年份为可选时:
\((?P<STUDIO>.+)\) - (?P<TITLE>.+)?( \((?P<YEAR>\d{4})\))??( - (?P<SEGMENT>(?i)(cd|disc|disk|dvd|part|pt|scene) \b[1-8]\b))?
最后我得出了这样的结果:
命名群
如果我将所有年份一起删除,使字符串类似于(制片厂)-file-CD3,我将得到以下内容:
命名群
我需要的是:
命名群
发布于 2022-01-18 09:13:33
您可以将模式写为
(?i)^\((?P<STUDIO>[^()]*)\) - (?P<TITLE>.+?)?(?: \((?P<YEAR>\d{4})\))?(?: - (?P<SEGMENT>cd|disc|disk|dvd|part|pt|scene) [1-8])?$^开始\(匹配((?P<STUDIO>[^()]*)组工作室匹配字符( (和)除外)\) -匹配) -(?P<TITLE>.+?)?组标题尽可能匹配1+字符(?:非捕获组与匹配\((?P<YEAR>\d{4})\)在组年和)中匹配(和4位数字)?关闭非捕获组并使其成为可选的(?:非捕获群-匹配(?P<SEGMENT>cd|disc|disk|dvd|part|pt|scene)组段匹配任何备选方案[1-8]匹配一个空格和一个数字1-8。)?关闭非捕获组并使其成为可选的$末端https://stackoverflow.com/questions/70748753
复制相似问题