Парсинг на JS

Sunday

Cōgitō ergō sum
Регистрация
13 Дек 2009
Сообщения
823
Реакции
342
Есть парсер на JS и там всё стандартно:
Берётся левая часть, правая часть и достаётся всё, что между ними.

Суть проблемы в том, что в левой части постоянно меняется код.

К примеру:
Код:
<img class="q" width="100" src="/images/logo.png?v=12.12.3.0" alt="Logo">
Версия картинки очень часто меняется и приходится постоянно вносить изменения, и это дико бесит. :D
Что можно придумать в этом случае, чтобы не вносить постоянные изменения? Может регулярку туда каукую-то прописать?
 
Последнее редактирование:
не особо понятно какие именно данные нужно получить (между чем и чем)
вот к примеру регулярка для получения "Logo" при условии что версия любая может быть

JavaScript:
var regex = /<img class="q" width="100" src="\/images\/logo\.png\?v=.*?" alt="([^"]*)"/;
var str = '<img class="q" width="100" src="/images/logo.png?v=12.12.3.0" alt="Logo">';
var match = regex.exec(str);

if (match && match[1]) {
  var altText = match[1];
  console.log(altText);
} else {
  console.log('No match found.');
}
 
да ты можешь использовать регулярку

JavaScript:
// исходная строка с тегом <img>
var imgTag = '<img class="q" width="100" src="/images/logo.png?v=12.12.3.0" alt="Logo">';

// регулярное выражение для извлечения версии из атрибута src
var versionRegex = /src="\/images\/logo\.png\?v=([0-9.]+)"/;
var match = imgTag.match(versionRegex);

if (match) {
  var version = match[1];
  console.log("Версия картинки: " + version);
} else {
  console.log("Версия не найдена");
}

в этом примере мы используем регулярное выражение, которое ищет строку /images/logo.png?v= и захватывает последующий набор цифр и точек в группу. после этого мы можем получить версию из соответствующей группы.
 
Присоединяюсь к
не особо понятно какие именно данные нужно получить (между чем и чем)
и думаю его код максимально близок к твоей задаче...

Но. Уточни!

У меня сложилось впечатление что:
Дано - html состоит из:
левая-часть
ЦЕЛЬ-ПАРСИНГА
правая-часть
При этом:
правая-часть=всегда одна ( типа </p> )
левая-часть принимает значения:
Код:
<img class="q" width="100" src="/images/logo.png?v=12.12.3.0" alt="Logo">
<img class="q" width="100" src="/images/logo.png?v=13.13.3.0" alt="Logo">
<img class="q" width="100" src="/images/logo.png?v=14.16.6.0" alt="Logo">
<img class="q" width="100" src="/images/logo.png?v=15.234.395.005" alt="Logo">
<img class="q" width="100" src="/images/logo.png?v=16.0.003.090" alt="Logo">
 
не особо понятно какие именно данные нужно получить (между чем и чем)
вот к примеру регулярка для получения "Logo" при условии что версия любая может быть

JavaScript:
var regex = /<img class="q" width="100" src="\/images\/logo\.png\?v=.*?" alt="([^"]*)"/;
var str = '<img class="q" width="100" src="/images/logo.png?v=12.12.3.0" alt="Logo">';
var match = regex.exec(str);

if (match && match[1]) {
  var altText = match[1];
  console.log(altText);
} else {
  console.log('No match found.');
}
Всё так, как написал выше H&S

Что именно парсить здесь не важно. Здесь важно то, что в левой части, часть кода, а именно версия, часто меняется.
Если в парсере написано 12.12.3.0 и на сайте тоже самое, то проблем нет, но когда на сайте меняется любая цифра, то понятное дело, что парсер ломается и я лезу в код, чтобы внести актуальную цифру. И так до сл. раза, пока они снова не обновят версию.
Как от этого избавиться? Как правильно сделать, чтобы при изменении версий, скрипт продолжал работать?
 
Тогда как-то так:
JavaScript:
var regex = /<img class="q" width="100" src="\/images\/logo\.png\?v=.*?" alt="Logo">([^"]*)<\/p>/;
var str = '<img class="q" width="100" src="/images/logo.png?v=12.12.3.0" alt="Logo">find me</p>';
var match = regex.exec(str);

if (match && match[1]) {
  var searchResult = match[1];
  console.log(searchResult);
} else {
  console.log('No match found.');
}
str - входная строка
find me - текст, который находится
regex - регулярка

"find me" будет найдено при любом значении версии
 
Назад
Сверху