JS Регексп для получения эпизодов в youtube видео
Недавно на ютубе появились эпизоды, а может и не недавно. В своем проекте мне нужно выдавать некоторую информацию об ютуб видео, эпизоды не исключение. Для уточнения покажу, что за эпизоды. http://i.imgur.com/CrgfJmw.png
Нужно получить временную метку начала и описание к этой метке. Я знаю то, что эти метки описываются в описании под видео в строгом формате, поэтому проблем не должно быть.
http://i.imgur.com/cG7pRV9.png
Из своих усилий я смог получить лишь само время, т.е метки, но не описание к ним, и наоборот, только уже целиком.
^([^\n]+)\\n - цепляет [00:00] - Episode title
UPD: 0:00 - Episode title тоже работает.
Ответы (1 шт):
UPD: Не совсем правильное применение в данном случае...
regex = /^\[?([0-9]{1,2}:[0-9]{1,2})\]?[^A-z]+(.*)$/gm;
str = '[00:00] - Episode title';
result = str.replace(regex, 'Это время: $1, это название: $2');
console.log(result);
Лучше использовать match, для создания массива:
regex = /^\[?([0-9]{1,2}:[0-9]{1,2})\]?[^A-z]+(.*)$/m;
str = '[00:00] - Episode title';
result = str.match(regex);
console.log('Название эпизода: '+result[2]+', время эпизода: ' +result[1]);
Сам шаблон регулярного выражения:
^\[?([0-9]{1,2}:[0-9]{1,2})\]?[^A-z]+(.*)
^ - начало строки
\[? символ скобочки(необязательный элемент, квантификатор ? аналогичен {0,1} и означает отсутствие или только одного совпадения
[0-9]{1,2} - одна или две цифры
: - явное появление одного символа :
[^A-z]+ - все кроме символов латинского алфавита, квантификатор + означает появление одного и более совпадений
.* - ноль и более любых символов.
$ - символ конца строки
Части с временем и названием взяты в круглые скобки, таким образом мы создаем группу захвата, которую в дальнейшем можно вызывать, нумерация проходит слева направо.
Первая группа будет время, вторая название.