0 / 0 / 0
Регистрация: 07.04.2020
Сообщений: 4
|
|
Catastrophic Backtracking в регулярном выражении09.04.2020, 17:15. Показов 662. Ответов 4
При написании небольшого парсера поисковой системы возникал проблема с регулярным выражением:
Есть регулярное выражение для парсинга HTML страницы: var pattern = @ <div class="A(.*?)(href=")(?<href>.*?)"(.*?)< div class="B">(?<anchor>.*?)<.*?><div class="C yDYNvb">(?<sniplet>.*?)</div> при парсинге страницы все работает. Но если происходит смена дизайна на странице, например: <div class="B заменяется на <div class="K происходит Catastrophic backtracking и начинает зависать парсер. Задача: подкорректировать регулярное выражение так, чтобы в выше указанном случае смены дизайна страницы не происходило Catastrophic backtracking, а парсер просто переставал искать (Ничего не найдено или ошибка) Заранее благодарен за помощь
0
|
09.04.2020, 17:15 | |
Ответы с готовыми решениями:
4
Разобраться в регулярном выражении Проверка на регистр в регулярном выражении Тире и дефис в регулярном выражении |
Администратор
![]() ![]() |
|
09.04.2020, 23:47 | |
fromes, выкидываем регулярки и переходим на использование специализированных библиотек парсинга HTML таких как HtmlAgilityPack илиAngleSharp.
0
|
0 / 0 / 0
Регистрация: 07.04.2020
Сообщений: 4
|
||||||
10.04.2020, 11:16 [ТС] | ||||||
OwenGlendower
Спасибо. Я знаю про данные библиотеки. Но у меня задача именно регулярки. Программа пишется на C#. Мне дали задание создать регулярку на основе выданного шаблона в RegEx для парсинга страниц в Гугл, но пока я в регулярных выражениях новичек и очень много не понятно в них, хоть и прочитал n-во количество информации о них. Сама регулярка
Задание подкорректировать ее так, чтобы при смене дизайна страницы (например сменили <div class="PpBGzd YcUVQe"> на <div class="ApBGzd YcUVQe"> ) не происходил бесконечный бэктракинг, а просто было "Не найдено или ошибка" Пример кода страницы, на которой она работает: https://wdho.ru/9olL Пример измененной страницы: https://wdho.ru/9olP Заранее спасибо за помощь.
0
|
0 / 0 / 0
Регистрация: 07.04.2020
Сообщений: 4
|
|
20.04.2020, 10:46 [ТС] | |
Спасибо большое.
0
|
20.04.2020, 10:46 | ||||||
Помогаю со студенческими работами здесь
5
Full match в регулярном выражении Несколько подстрок в регулярном выражении Что не правильно в этом регулярном выражении Что означают эти символы в регулярном выражении? Что может быть не так в регулярном выражении Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Миграция монолита в Event-Driven микросервисную архитектуру на C#
stackOverflow 11.04.2025
Монолитная архитектура – классический подход к разработке программного обеспечения. Это приложение, построенное как единое целое, где все компоненты тесно связаны между собой. Большинство проектов. . .
|
Go в Kubernetes: Управление ресурсами
golander 11.04.2025
Разработчики Go-приложений в Kubernetes часто сталкиваются с неожиданными проблемами производительности и даже внезапными отказами контейнеров. Причина этого кроется в особенностях взаимодействия. . .
|
Агрегаты и сущности в DDD микросервисах
Javaican 10.04.2025
Разработка современных программных систем часто приводит на распутье: монолит или микросервисы? Даже при выборе микросервисной архитектуры многие команды сталкиваются с проблемой правильного. . .
|
Многопоточность в C#: Task и параллельное программирование
UnmanagedCoder 10.04.2025
Современные процессоры уже давно перестали наращивать тактовую частоту в пользу увеличения количества ядер. Это создало интересную ситуацию: разработчики, привыкшие к последовательному. . .
|
Линейное решение нелинейной задачи будет иметь приблизительный результат вычисления для метода обработки данных из double buffering.
Hrethgir 10.04.2025
Вообще изначально я пренебрёг квадратурой числа, но потом понял, что для вычисления приблизительного значения - сгодится, формулу можно будет корректировать по ходу. Это потому что прямое соотношение. . .
|
Переменные в Python
py-thonny 10.04.2025
Переменная в программировании — это символическое имя, связанное с областью памяти, в которой хранится значение. Она позволяет получать доступ к данным через понятные человеку идентификаторы, а не. . .
|
Многопоточность в C#: Task и асинхронные операции
UnmanagedCoder 10.04.2025
Многопоточность позволяет выполнять несколько операций одновременно, что важно для решения двух основных задач: повышения скорости выполнения вычислительно-сложных операций и сохранения отзывчивости. . .
|
Запуск контейнеров Docker на ARM64
Mr. Docker 09.04.2025
Появление таких решений, как Apple M1/ M2, AWS Graviton, Ampere Altra и Raspberry Pi, сделало использование ARM-систем обыденностью для многих разработчиков и DevOps-инженеров. При этом Docker,. . .
|
Vue SFC компонент на PHP с Fusion
Jason-Webb 09.04.2025
PHP на сервере и JavaScript на клиенте — классическое сочетание, которое, несмотря на свою эффективность, создает определенный когнитивный диссонанс при разработке. В этом контексте появляются. . .
|
TypeScript vs JavaScript: Отличия и когда что использовать
Reangularity 09.04.2025
JavaScript появился в 1995 году как творение Брендана Эйха и быстро стал основой интерактивности в вебе. За свою историю он прошел путь от простого языка для манипуляций с DOM до полноценной. . .
|