使用正则表达式将电影文件名与可选部分匹配
Match movie filenames with optional parts with regex
我有以下格式的片名
(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})\)
我得到以下结果
studio = Studio Name
title = Film Title Part-1
genre = - Animation
year = 2014
我尝试了以下方法,通过将正则表达式更改为
来使 "- 动画" 可选
^\((?P<studio>.+)\) - (?P<title>.+)(?:(?P<genre>-.+)?)\((?P<year>\d{4})\)
但我最终得到以下结果
studio = Studio Name
title = Film Title Part-1 - Animation
genre =
year = 2014
我正在使用 Python,我正在执行的处理正则表达式的代码是
pattern = re.compile(REGEX)
matched = pattern.search(film)
你可以省略流派周围的非捕获组,将第一个 .*
更改为否定字符 class [^()]
匹配除括号外的任何字符并使 .+
in group title non greedy to allow matching the optional genre group.
对于流派,您可以匹配 .+
,如果您只想匹配一个词,则可以使匹配更具体。
^\((?P<studio>[^()]+)\) - (?P<title>.+?)(?P<genre>- \w+ )?\((?P<year>\d{4})\)
说明
^
字符串开头
\((?P<studio>[^()]+)\)
Named group studio 匹配除 (
和 )
之间的任何字符
-
字面匹配
(?P<title>.+?)
命名组 title,尽可能匹配除换行符外的任何字符
(?P<genre>- \w+ )?
命名组 genre,匹配 -
space,1+ 字字符和 space
\((?P<year>\d{4})\)
命名组 year,匹配 (
和 )
之间的 4 个数字
如果要整行匹配:
^\((?P<studio>[^()]+)\) - (?P<title>.+?)(?P<genre>- \w+ )?\((?P<year>\d{4})\)\.mp4$
我有以下格式的片名
(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})\)
我得到以下结果
studio = Studio Name title = Film Title Part-1 genre = - Animation year = 2014
我尝试了以下方法,通过将正则表达式更改为
来使 "- 动画" 可选^\((?P<studio>.+)\) - (?P<title>.+)(?:(?P<genre>-.+)?)\((?P<year>\d{4})\)
但我最终得到以下结果
studio = Studio Name title = Film Title Part-1 - Animation genre = year = 2014
我正在使用 Python,我正在执行的处理正则表达式的代码是
pattern = re.compile(REGEX)
matched = pattern.search(film)
你可以省略流派周围的非捕获组,将第一个 .*
更改为否定字符 class [^()]
匹配除括号外的任何字符并使 .+
in group title non greedy to allow matching the optional genre group.
对于流派,您可以匹配 .+
,如果您只想匹配一个词,则可以使匹配更具体。
^\((?P<studio>[^()]+)\) - (?P<title>.+?)(?P<genre>- \w+ )?\((?P<year>\d{4})\)
说明
^
字符串开头\((?P<studio>[^()]+)\)
Named group studio 匹配除(
和)
之间的任何字符
-
字面匹配(?P<title>.+?)
命名组 title,尽可能匹配除换行符外的任何字符(?P<genre>- \w+ )?
命名组 genre,匹配-
space,1+ 字字符和 space\((?P<year>\d{4})\)
命名组 year,匹配(
和)
之间的 4 个数字
如果要整行匹配:
^\((?P<studio>[^()]+)\) - (?P<title>.+?)(?P<genre>- \w+ )?\((?P<year>\d{4})\)\.mp4$