Я пишу Javascript букмарклет в качестве побочного проекта для работы (не кодекс для жизни, очень новичок).Не знаете, где мое Regex пошло не так
Он просматривает транскрипт cnn.com
и выбирает имена и названия живых гостей, за исключением тех, которые воспроизводятся с ленты.
Для этого я захватить сайт, а затем использовать replace()
и регулярное выражение для удаления текста между BEGIN VIDEO CLIP
и END VIDEO CLIP
, а затем использовать другое регулярное выражение для поиска все, что соответствует формату NAME, TITLE:
. Он работает как прелесть на некоторых транскриптах и терпит неудачу на других. Вот мой код:
(function() {
var webPage = document.body.innerText;
var tape = webPage.replace(/(BEGIN VIDEO CLIP)([\s\S]*)(END VIDEO CLIP)|(BEGIN VIDEOTAPE)([\s\S]*)(END VIDEOTAPE)/g, "");
var searchForGuests = /[A-Z ].+,[A-Z0-9 ].+:/g;
var guests = tape.match(searchForGuests).join("; ");
alert("Guests: " + guests)
})();
В качестве примера, при применении к http://transcripts.cnn.com/TRANSCRIPTS/1303/05/pmt.01.html, он предупреждает только имя хоста (Piers Morgan), хотя есть несколько живых гостей. Это проблема с моим регулярным выражением? Я тестировал в Regexr, но насколько я могу судить, не используя ничего незаконного в Javascript.
Он должен работать с любым из следующих стенограмм: http://transcripts.cnn.com/transcripts.
первый выкл + соответствует ничего, я угадать, что вы хотите совместить '/ [AZ] +, [A-Z0-9] +:/g' что-то вроде этого, так как все они в шапках – srosh
и используют [regex.exec] (https: //developer.mozilla .org/EN-US/Docs/JavaScript/Ссылка/Global_Objects/RegExp/exec) – srosh