У меня есть следующие строки случай:Perl: Regex соответствие дополнительных строк
- моего $ ул = "Warehouse.13.s01e01.hdtv.xor.avi";
- my $ str = "Warehouse.13.01x01.hdtv.xor.avi";
- my $ str = "Warehouse.13.season01episode01.hdtv.xor.avi";
Разделитель (.
) в вышеуказанных случаях может быть заменен на _ - \s
. Теперь, чтобы соответствовать выше случаям я создал следующее регулярное выражение, и он прекрасно работает:
my $regex_object = qr{.*?\d{1,2}(?:e|edosipe)?[._\- x]?\d{1,2}(?:s|nosaes)?[._\- ]?(?=\d+)(.*)};
Вы можете видеть, что я должен был полностью изменить строку для обработки \d+
, потому что один должны иметь абсолютное совпадение длиной в просмотровом позади, так что я превратил его в будущее.
Теперь для вышеуказанных случаев выход Warehouse 13
, который является моим требуемым выходом.
Проблемы теперь, если мой series name
не содержит numbers(13,24)
Я не хочу, чтобы мое выше регулярное выражение, чтобы соответствовать и, чтобы убедиться, что я использовал (?=\d+)
я, е, если s|season
предшествует номер или нет.
Теперь, если мой $str
является 'how.i.met.your.mother.s03e13.hdtv.mkv'
он соответствует выше регулярному выражению и выходы
how.i.met.your.mother.s0
Теперь, я понятия не имею, почему он сопрягая эту строку, даже после использования взгляда, позади и как это исправить.
Ребята, если вы голосуете, я по крайней мере даю причину. – ronnie