Я пишу регулярное выражение для сопоставления данных из файла данных звуковых дорожек IMDb.Мои регулярные выражения в основном работают, хотя в некоторых местах они впрыскивают слишком много текста в названные группы.Возьмем, к примеру, следующее регулярное выражение:
"^ Performed by '?(?<performer>.*)('? \(qv\))?$"
Группа исполнителей включает в себя строку ' (qv)
, а также имя исполнителя.К сожалению, поскольку записи не имеют постоянного формата, имена некоторых исполнителей заключены в одинарные кавычки, а другие нет.Это означает, что они являются необязательными, поскольку это касается регулярных выражений.
Я пытался пометить последнюю группу как жадную группу, используя спецификатор группы ?>
, но это никак не повлияло на результаты.
Я могу улучшить результаты, изменив группу исполнителей так, чтобы она соответствовала небольшому диапазону символов, но это снижает мои шансы правильно разобрать имя.Кроме того, если бы я просто исключил символ апостроф, я бы не смог разобрать, например, имена групп, содержащие апострофы, такие как группа одиноких друзей Элии, которая исполнила Run For Your Life , показанную в Обитель зла: Апокалипсис .
Обновление: Вот пример строки ввода, которой регулярное выражение должно соответствовать, в соответствии с запросом.Также представлены другие форматы, которые не поддерживаются моим существующим регулярным выражением.
" Performed by 'Carmen Silvera' (qv)"