|
6 / 5 / 2
Регистрация: 08.09.2015
Сообщений: 95
|
|
Выбрать нужный параграф06.02.2017, 23:25. Показов 1384. Ответов 14
Метки нет (Все метки)
Добрый день!
Подскажите как выбрать нужный параграф из HTML страницы. В нужном параграфе есть текст XXX /<p.*?XXX.*?p>/s - захватывает вместе с нужным, все предыдущие параграфы. Пример <p rhrh rhrr > ejej </p><p jeje ehe > df XXX hg</p>
0
|
|
| 06.02.2017, 23:25 | |
|
Ответы с готовыми решениями:
14
Как выбрать нужный элемент?
|
|
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
|
|
| 07.02.2017, 04:43 | |
|
Попробуйте так: /<p[^>]*>[^<]*XXX[^<]*<\/p>/isU
Добавлено через 2 минуты если в параграфе будут ещё теги то так: /<p[^>]*>.*XXX.*<\/p>/isU
1
|
|
|
6 / 5 / 2
Регистрация: 08.09.2015
Сообщений: 95
|
|
| 07.02.2017, 04:55 [ТС] | |
|
/<p[^>]*>[^<]*XXX[^<]*<\/p>/isU
да, это будет работать. Но если нет тэгов внутри параграфа ![]() а второй /<p[^>]*>.*XXX.*<\/p>/isU опять захватывает все. Я вот не могу сообразить - исключить два символа подряд в комбинации возможно? Тогда минусовка p> перед XXX решила бы проблему. Тэги внутри параграфа конечно есть.
0
|
|
|
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
|
|
| 07.02.2017, 05:49 | |
|
Можно сыграть на том что известно какие теги есть внутри параграфа, т.к. параграфы не могут быть вложенными, если такой вариант сойдёт то можно перечислять в шаблоне теги которые встречаются внутри параграфа. Ну или какой-то другой способ поиска текста, я бы подумал если Вы предоставите подробнее текст поиска и пример текста где будет происходить поиск.
1
|
|
|
6 / 5 / 2
Регистрация: 08.09.2015
Сообщений: 95
|
|
| 07.02.2017, 07:35 [ТС] | |
|
Спасибо за помощь. Известные теги я понимаю как выцепить
![]() Задача в целом: (может я неправильно делаю ![]() Есть несколько файлов из Word с данными. составлены по определенному принципу. Мне нужно эти данные выцепить и загнать в таблицу. Заставить пользователя переделывать в Excel - практически нереально. Да и задача не очень сложная. 1.Сохраняю файл в ворде как html с фильтром (когда картинки отдельно в папке). Он разбросал весь текст на параграфы со своими стилями и т.п. 2.Обрабатываю получившийся файл, разбирая параграфы. Почему хотел сделать более менее универсальным? Текстов много и ворд скорее всего сделает каждый немного по-своему, стараясь придать сходство с оригиналом. Но параграфы будут по любому. Почему не в текст и разбирать? Текст в ворде содержит и картинки и формулы. При переводе в вэб - все это хорошо переводится и сохраняется. Удобно и в базе хранить и выводить потом в виде страницы. 3. Хотелось сделать что-то универсальное, чтобы потом пользователь(продвинутый) мог сам проделывать подобные манипуляции, без программиста.
0
|
|
|
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
|
|
| 07.02.2017, 15:33 | |
|
Вообще из-за вложенности тегов парсить html регулярками достаточно не просто, я в таких случаях работаю со структурой html а точнее перевожу его в xml и там уже ищу что мне нужно, с xml можно работать как с объектом (simplexml) или c помощью xpath. Ещё один момент: файлы word а именно docx представляют из себя zip-архив в котором лежат xml файлы, возможно то что Вам нужно проще проделывать именно с этими файлами, т.е. без преобразования документа.
1
|
|
|
6 / 5 / 2
Регистрация: 08.09.2015
Сообщений: 95
|
|
| 07.02.2017, 17:02 [ТС] | |
|
Тоже вариант.
Хотя посмотрел я этот docx. там черт ногу сломит, лучше родной htm Например в тексте встречаются формулы типа H2SO4 В HTML просто SUB-ами экранируется, их же можно потом и в готовую страницу выдавать в браузере. И ворд при сохранении в HTM сразу так и делает. А вордовский DOCX слишком хитро все закручивает. Картинки опять же. Про регулярку спросил - думал получится изящно, одной Спасибо за подсказки, буду спокойно разбирать теги, это на мой взгляд несложно. Если вдруг соображу с регуляркой - напишу.
0
|
|
|
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
|
|
| 07.02.2017, 17:43 | |
|
Вот попробуйте, я не проверял но должно работать: /<p[^>]*> ([^<]|<[^p]|<p[^\s])*XXX([^<]|<[^p]|<p[^\s])*<\/p>/isU
1
|
|
|
6 / 5 / 2
Регистрация: 08.09.2015
Сообщений: 95
|
||
| 08.02.2017, 10:42 [ТС] | ||
|
Я не мог сообразить как сделать проверку на 2 символа. Теперь понятно, заодно упростил вашу регулярку: /<p([^>]|[^p]>)*?XXX.*?p>/s Тоже работает!
0
|
||
|
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
|
||
| 08.02.2017, 11:28 | ||
|
1
|
||
|
6 / 5 / 2
Регистрация: 08.09.2015
Сообщений: 95
|
||
| 08.02.2017, 11:54 [ТС] | ||
|
А вопрос за звездочкой - снимает "жадность". То есть без него моя регулярка схватит все до последнего закрывающего знака параграфа в тексте, то есть схватит и параграфы сзади нужного. Я проверял и вашу регулярку и свою на сайте http://regex101.com. С разными текстами - все работает. Да и логически все должно работать.
0
|
||
|
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
|
|||
| 08.02.2017, 11:58 | |||
|
1
|
|||
|
6 / 5 / 2
Регистрация: 08.09.2015
Сообщений: 95
|
||
| 08.02.2017, 12:23 [ТС] | ||
|
Я просто давно уже не занимался, раньше щелкал как семечки все, но подзабыл и потерял свои старые доки. К новым из инета никак не приспособлюсь. Вспоминаю забытое
0
|
||
|
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
|
||
| 08.02.2017, 15:37 | ||
|
1
|
||
|
6 / 5 / 2
Регистрация: 08.09.2015
Сообщений: 95
|
||
| 10.02.2017, 15:33 [ТС] | ||
|
Что-то схожу с ума ![]() Вот 2 примера из моей задачи. файлы 005 и 006 с расширением htm Это то что получилось из ворда, вырезал нормальный и проблемный кусок. Тестовая программка test5, которая просто обрабатывает одну регулярку. В примере или ваша или моя с выбором любого параграфа. На файле 005 все работает как положено, на файле 006 программа не работает. Причем на сайтеhttps://regex101.com на обоих примерах обе регулярки работают без проблем. А в программе вылетают на одном из параграфов (самый длинный). В чем может быть проблема??? Или как ее определить что за проблема, у меня просто не открывается страница.
0
|
||
| 10.02.2017, 15:33 | |
|
Помогаю со студенческими работами здесь
15
Как выбрать нужный Пунк из Select'a? Как из двух вордов выбрать нужный? Помогите выбрать нужный модем/маршрутеризатор Не могу выбрать нужный код в Паскаль
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|