Используя Regex, выберите целое <p>.... </p> с условием - PullRequest
0 голосов
/ 27 января 2019

Используя Regex, как выбрать целое <p>....</p>, где определенный текст (например, «hello world») находится внутри <p>....</p>. Требуется ваша помощь.

1 Ответ

0 голосов
/ 27 января 2019

Это регулярное выражение JS сработает, используя группу для захвата содержимого абзаца и положительный прогноз, чтобы соответствовать до первого </p>, не съедая другие:

/<p>\s*([\w\s]*hello world[\w\s]*)\s*(?=<\/p>)/gm

Если вы хотите захватить <p> теги тоже:

/(<p>\s*[\w\s]*hello world[\w\s]*\s*(?=<\/p>)<\/p>)/gm

А если у ваших <p> тегов могут быть классы или пробелы:

/(<\s*p[^>]*?>\s*[\w\s]*hello world[\w\s]*\s*(?=<\s*\/p\s*>)<\s*\/p\s*>)/gm

Вот пример захвата целых <p> тегов:

const html = document.getElementById('demo').innerHTML;
const regex = new RegExp(/(<\s*p[^>]*?>\s*[\w\s]*hello world[\w\s]*\s*(?=<\s*\/p\s*>)<\s*\/p\s*>)/gm);
let match = regex.exec(html);
console.log('Matches:');
while (match != null) {
    console.log(match[1])
    match = regex.exec(html);
}
<div id="demo">
  <p class="p1">bla bla hello world bla</p>
  <p >hello world</p>
  <p>Paragraph not matching</p>
</div>

Вот хороший онлайн-инструмент для проверки ваших регулярных выражений.

Надеюсь, чтопомогает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...