Поиск текста по элементам в HTML-документе - PullRequest
0 голосов
/ 23 мая 2018

Обновление: для тех, кто помечает этот вопрос как дубликат: я ищу текст, который может быть включен только в один элемент или может быть распределен по 100 элементам.Я не знаю, что до поиска.Все, что я знаю, это слова в шаблоне, которые я ищу, взятые из этого HTML.Теперь мне нужно выполнить поиск, который пропускает (но запоминает) html / javascript, который может быть перераспределен с моим текстом, который я ищу.

Надеюсь, это объяснение поможет найти ответ на мой вопрос.

*********** Конец обновления ***************

Я ищу библиотеку или частькод, который позволял бы искать и размещать произвольный простой текст (начинать / останавливать смещения или теги) внутри HTML-документа.

Пример:

  • шаблон для поиска: "текст, которыйЯ ищу "
  • HTML-документ:
<html>...<p>text that <b>I'm</b/> <span>looking
   for<div>...</div>...</p>
  • результирующее совпадение:

text that <b>I'm</b/> <span>looking for

Кто-нибудь знает такую ​​утилиту?спасибо

1 Ответ

0 голосов
/ 23 мая 2018

РЕДАКТИРОВАНИЕ: сделал некоторые реальные программирования.Этот алгоритм принимает теги HTML между символами и тегами HTML и пробел между словами.

const haystack = '<html>This, <b>that</b>, and\nthe<i>other</i>.</html>';
const needle = 'This, that, and the other.';

// Make a regex from the needle...
let regex = '';

// ..split the needle into words...
const words = needle.split(/\s+/);
for (let i = 0; i < words.length; i++) {
  const word = words[i];

  // ...allow HTML tags after each character except the last one in a word...
  for (let i = 0; i < word.length - 1; i++) {
    regex += word.charAt(i) + '(<.+?>)*';
  }
  regex += word.charAt(word.length - 1);

  // ...allow a mixture of whitespace and HTML tags after each word except the last one
  if (i < words.length - 1) regex += '(\\s|(<.+?>))+';
}

// Find the match, if any
const matches = haystack.match(regex);
console.log(matches);

// Report results
if (matches) {
  const match = matches[0];
  const offset = matches.index;

  console.log('Found match!');
  console.log('Offset: ' + offset);
  console.log('Length: ' + match.length);
  console.log(match);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...