Я знаю, что это не регулярное выражение, но это чистый javascript и в основном предпочтительный метод при работе с «выбором узлов» в документе: XPath.
С помощью этого фрагмента XPath вы выберете самый большой узел, содержащийтекст «Это тест»:
document.evaluate("/html/body//*[contains(.,'This is test')]", document);
В вашем примере будет выбран первый <p>
, включая его дочерние теги.
Вышеприведенная функция возвращает XPathResult и вам придется перебирать его, чтобы делать с ним все, что вы захотите. Вы можете повторить его снова, чтобы вернуть все дочерние узлы или просто текст. Перебор набора результатов и извлечение данных должны быть рекурсивными, но я просто создал простой пример, чтобы получить представление.
Пример jsFiddle