Regex для извлечения названия фильма из имени файла - PullRequest
3 голосов
/ 28 мая 2009

представьте, будет ли у вас следующая строка:

"Великий фильм (1999) DVDRip.avi"

Я пытаюсь извлечь из этого строку "A Great Movie" через регулярное выражение, но изо всех сил пытаюсь получить правильное регулярное выражение для этого.

Я бы тоже использовал этот разбор имен файлов различной длины.

спасибо!

Ответы [ 3 ]

4 голосов
/ 28 мая 2009

Этот синтаксис разработан для синтаксического анализатора .NET (может отличаться в других механизмах регулярных выражений):

^(?<MovieName>.+)\((?<Year>\d+)\)(?<AdditionalText>[^\.]*)\.(?<Extension>[^\.]*)$

Вы можете использовать этот синтаксис, чтобы получить нужные данные:

string line = "Movie Text";
Match match = Regex.Match(line);
match.Groups["MovieName"].Value;

Вы также можете извлечь Год, Дополнительный текст и Расширение, если вам это нужно.

1 голос
/ 28 мая 2009

Предполагая, что скобке предшествует пробел:

^(.+)\s\(.+
0 голосов
/ 28 мая 2009

Совпадает с точностью до первой скобки

^([^(]+) 

Быстрее (незначительно), чем вариант Бена

Python:

>>> import re
>>> re.compile("^([^(]+)").match("A Great Movie (1999) DVDRip.avi").groups()
('A Great Movie ',)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...