Я исследовал это совсем немного, но не смог найти рабочий пример, как сопоставить вложенные tags html с атрибутами. Я знаю, что можно сопоставить сбалансированные / вложенные самые внутренние tags без атрибутов (например, регулярное выражение для и будет #
#x).
Тем не менее, я хотел бы увидеть шаблон регулярного выражения, который найдет пару тегов html с атрибутами.
Пример: в основном это должно совпадать
**** ****
и не
**** ****
У кого-нибудь есть идеи?
Для целей тестирования мы могли бы использовать: http://www.lumadis.be/regex/test_regex.php
PS. Стивен упомянул решение в своем блоге (на самом деле в комментарии), но он не работает
$regex = '/]+?\bid\s*=\s*"MyID"[^>]*>(?:((?:[^<]++|]*>))+)|(]*>(?>(?1)|(?2))*))?/i';
Solutions Collecting From Web of "Регулярное выражение для вложенных тегов (самое внутреннее, чтобы было проще)"
- angularJS Как я могу игнорировать определенные tags HTML?
- Открытие / закрытие тегов и производительности?
- мета-описание / тег не работает
- Стрить HTML-tags и их содержимое
- Белое пространство внутри XML / HTML-тегов
- Python - beautifulsoup, применяется в каждом текстовом файле в папке и создает новый текстовый файл
- Regex - я хочу только совместить начальные tags в регулярном выражении
- Нужно ли писать HEAD, BODY и HTML-tags?
RegEx соответствуют открытым тегам, за исключением тегов XHTML
И действительно, это абсолютно невозможно. HTML имеет нечто уникальное, нечто волшебное, которое невосприимчиво к RegEx.
Я создал короткий скрипт python для решения проблемы управления вложенными тегами. Он работает счастливо с html и с другими, ужасными вложенными синтаксисами тоже, как код wiki. Гибридно, я написал это, чтобы избежать регулярного выражения! Я не мог понять их вообще. 🙁 Я использовал эту функцию для чего угодно, она очень хорошо работает для html и xml. Это тоже очень быстро, так как он использует только базовый поиск строк. Я очень рад узнать, что регулярное выражение не может помочь. 🙂
Я хотел бы поделиться сценарием, если кто-то из вас заинтересован; но подумайте, я не программист, я полагаю, что проблема была решена в течение длительного времени!
Вы можете найти меня на моей странице обсуждения в it.source: http://it.wikisource.org/wiki/Discussioni_utente:Alex_brollo
Сопоставление самых близких совпадающих пар тегов
&
, а также их атрибутов и контента:
#
)).)*
#s
Ключевым моментом здесь является то, что (?:(?!STRING).)*
Относится к строкам, поскольку [^CHAR]*
относится к символам.
Кредит: https://stackoverflow.com/a/6996274
Пример в PHP:
< ?php $text = <<<'EOD' in 1 in 2 in 3 in 4 in 5 EOD; $matches = array(); preg_match_all('#)).)*#s', $text, $matches); foreach ($matches[0] as $index => $match) { echo "************" . "\n" . $match . "\n"; }
Выходы:
************ in 3 ************ in 5
-
Вызов редактора математики
-
CSS: white-space: nowrap, похоже, не работает в IE
-
Почему иногда якобы привязывают страницы?
-
Каков лимит символов для URL
-
Как использовать YQL для получения веб-результатов?
-
Сила для открытия всплывающего windows «Сохранить как …» в текстовой ссылке нажмите для PDF в HTML
-
отобразить список радио-ящиков в нескольких столбцах
-
Получение атрибута из родительского селектора – это CSS с использованием содержимого: attr ();
-
Отключить логотип YouTube на встроенном видео
-
Как вы переопределяете встроенное событие onclick?
-
Получить CSS Div для заполнения доступной высоты
-
Загрузка NSData в UIWebView
-
MVC: Как получить полный путь к файлу из поля ввода файла?
-
Являются ли пустые divs плохими?
-
Как создать гиперссылку, которая ссылается на страницу с предварительно выбранным параметром в раскрывающемся меню?