Извлечение названия фильма и года из строки, где год является необязательным - PullRequest
0 голосов
/ 23 марта 2011

Я упускаю действительно очевидную вещь здесь, но я новичок в регулярных выражениях, так что будьте добры; -)

У меня есть несколько фильмов в произвольном формате, которые могут иметь или не иметь годприкрепленный.

My Movie Name 2010
Some.Other.Super.Cool.Movie
The~Third|Movie.2010

Теперь, используя (.+)\W(\d{4}), я могу выделить два фильма с датами в две группы, одну из которых содержит название, а другую - год, но среднюю игнорируют?Я просто немного не уверен, как на самом деле сделать сегмент года необязательным.

В идеале ;-), я мог бы использовать одно выражение, чтобы возвращать имена с \ W, преобразованные в пробелы, но это другой разговор.

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 23 марта 2011

используя? после того, как группа символов сделает это необязательным, то в вашем случае после (\ d {4})

(.+)\W(\d{4})?

Это потому, что вы используете жадное сопоставление с (. +), А \ W включает символ новой строки в свой набор (я думаю, что по крайней мере). Удалите строку завершающих пробелов, и если это не сработает, сделайте (. +) Ленивым с? своего собственного, (. +?) - Также учтите, что \ W может быть неправильным разделителем для этой проблемы.

Также может помочь добавление $ в конец, поскольку для завершения функции потребуются цифры, если они могут, попробуйте lazing match и $.

(.+?)\W(\d{4})?$
0 голосов
/ 23 марта 2011

? Делает это необязательным

(.+?)\W?(\d{4})?$
...