我有以下格式的电影片名
(Studio Name) - Film Title Part-1** - Animation** (2014).mp4
粗体部分是可选的,这意味着我可以拥有这样的标题
(Studio Name) - Film Title Part-1 (2014).mp4
有了这个正则表达式
^\((?P<studio>.+)\) - (?P<title>.+)(?P<genre>-.+)\((?P<year>\d{4})\)
我得到以下结果
工作室=工作室名称 标题=电影标题第1部分 流派=-动画 年份= 2014
我通过将正则表达式更改为以下内容来尝试使“-动画”为可选
^\((?P<studio>.+)\) - (?P<title>.+)(?:(?P<genre>-.+)?)\((?P<year>\d{4})\)
但我最终得到以下结果
工作室=工作室名称 标题=电影标题第1部分-动画 类型= 年= 2014
我正在使用Python,正在执行以处理正则表达式的代码是
pattern = re.compile(REGEX)
matched = pattern.search(film)
您可以忽略流派的非捕获组,将第.*
一个更改为[^()]
与除括号之外的任何字符匹配的否定字符类,并使.+
greoup标题不贪心以允许匹配可选流派。
对于类型,您可以匹配.+
,或者如果您只想匹配一个单词,则使匹配更具体。
^\((?P<studio>[^()]+)\) - (?P<title>.+?)(?P<genre>- \w+ )?\((?P<year>\d{4})\)
说明
^
字符串开始\((?P<studio>[^()]+)\)
名为group studio的匹配任何字符,但介于(
和之间的括号除外)
-
逐字匹配(?P<title>.+?)
命名组标题,尽可能匹配除换行符以外的任何字符(?P<genre>- \w+ )?
命名组类型,匹配-
空间,1个以上的字符和空格\((?P<year>\d{4})\)
命名组一年,匹配之间的4个数字(
和)
如果要匹配整行:
^\((?P<studio>[^()]+)\) - (?P<title>.+?)(?P<genre>- \w+ )?\((?P<year>\d{4})\)\.mp4$
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句