Конструктор Регулярок

prodox

Client
Регистрация
28.08.2018
Сообщения
280
Благодарностей
55
Баллы
28
На мысль натолкнула простая идея от одного парсера сайтов .
Есть кусок кода который перед искомым текстом потом макрос {skip}, означающий пропустить любое число символов в этом куске
И кусок текста следующий после искомого текста.

И в принципе эта схема позволяет найти любой кусок нужного текста,
даже без указания, с чего начинается и заканчивается текст(опционально поможет)

И не нужны никакие xPath (кстати xPath до сих пор не показывает число совпадений), и прочие хреновины

В конструкторе регулярок Зенно постера отсутствует возможность вставить "пропустить любое число символов"
вписывать ".*" или любую регулярку в ТЕКСТ ПРЕДШЕСТВУЮЩИЙ ИСКОМОМУ смысла нет, ибо конструктор это сразу экранирует, и даже исправив в результируещей регулярке, потом начинаются гемор и сама идея конструктора регулярок сразу сводится на нет.


Прошу разработчиков обратить на такую систему поиска которая найдет все что угодно
1) кусок кода который перед искомым текстом,
2) в нём любое число макросов, например {skip},
означающих пропуск любого число символов включая переносы означающий [\w\W]*
3) и кусок текста следующий сразу после искомого текста.
4) опционально также помогут " с чего начинается текст", и "с чего заканчивается текст"

И уже не важно, что используется для поиска в итоге регулярное выражение или xPath

Не забудьте поставить счетчик числа совпадений
и образец выпаршенных вариантов как в инструменте "парсить текст".

Я уверен что других методов поиска даже не понадобится

пожалуйста придумайте макрос в поле "текст перед искомым текстом"
какой нибудь макрос означающий пропуск любого числа любых символов включая переносы типа {skip} или {any}
Ибо использование ".*" и "[\w\W]*" в результирующей регулярке в конструкторе регулярок экранируется \.\*

Такой же прием очень пригодится во всех конструкторах xPath в том числе.

Идея проста: " чтоб любой конструктор мог искать только после конкретного куска кода.

Тут конечно мегапрограммисты скажут, учи xPath и проучие мануалы. Но этим способом можно найти что угодно

В парсере очень легко пишется поиск
Текст вначале искомого текста:
<div class="content{skip}<table class=tab{skip}<td class="zhopa"{skip}>{skip}<div class="zhopa2"{skip}>

Текст в конце искомого текста:
</div>


Очень удобно когда нужно отбросить всякие атрибуты и теги <div{skip}myclass{skip}>

Такая схема хорошо помогает, когда в верстке напрочь отсутствуют классы и прочие атрибуты тегов и афтор решил использовать одинаковые классы для кучи разных тегов.

Начните с конструктора регулярок.
чтобы из поля текст предшествующий искомому макрос {skip} в результирующую регулярку писал [\w\W]*"

В конструкторе действий это вообще будет бомба

Всего 4 поля
1) текст которого до искомого с использованием {skip} --> [\w\W]*"
2) текст после искомого
3) 4) и текст с которого начинается и текст которым заканчивается.

И к черту все остальные способы с кучей полей и комбобоксов
 
Последнее редактирование:
  • Спасибо
Реакции: phoenixs

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 303
Благодарностей
5 421
Баллы
113
В конструкторе Зенно постера отсутствует возможность вставить "пропустить любое число символов"
вписывать ".*" или любую регулярку в ТЕКСТ ПРЕДШЕСТВУЮЩИЙ ИСКОМОМУ смысла нет, ибо конструктор это сразу экранирует, и даже исправив в результируещей регулярке, потом начинаются гемор и сама идея конструктора сразу сводится на нет.
Ибо использование .* в результирующей регулярке экранируется \.\*
Проблема из ничего. Просто берете и вписываете прямо в регулярку. Все регулярки сохраняются в выпадающем меню в правом верхнем углу.

<table class=tab<skip><td class="zhopa<skip>><skip><div>
Очень сложная процедура. Нужно привлечь весь штат ZennoLab для решения данного вопроса.
C#:
<table class=tab<.* ><td class="zhopa<.* >><.* ><div>

___
Что бы все понимали почему я так общаюсь, прошу изучить предыдущее предложение автора.

После чего ему было предложено уже готовое решение задачи, на которое ушло 10 минут https://zennolab.com/discussion/threads/v-konstruktore-dejstvija-sdelat-poisk-po-neskolkim-ehlementam-kak-v-sovostvax-dejstvij.79781/page-2#post-535347

Вместо спасибо, автор создал еще одну тему (дублирующую) с таким же предложением https://zennolab.com/discussion/threads/proverka-konstruktore-dejstvij-nalichija-teksta-pered-i-posle-iskomogo-ehlementa.80485

___
я конечно понимаю, что каждый в праве предлагать любые предложения и система голосования уже расставит приоритеты. Но вот такие предложения, это просто неуважение к сообществу. Я мол не хочу ctrl+v нажимать, мне очень сложно, сделайте что нибудь...

P.S. Хотите, что бы за вас поработали, милости просим в рекламный раздел.
 

prodox

Client
Регистрация
28.08.2018
Сообщения
280
Благодарностей
55
Баллы
28
Проблема из ничего. Просто берете и вписываете прямо в регулярку. Все регулярки сохраняются в выпадающем меню в правом верхнем углу.

Очень сложная процедура. Нужно привлечь весь штат ZennoLab для решения данного вопроса.
C#:
<table class=tab<.* ><td class="zhopa<.* >><.* ><div>
73713


Для чего нужен целый штат? Чтобы макрос {skip} заменялся на .* или [\w\W]* ?

Это одна строчка кода
 
Последнее редактирование:

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 303
Благодарностей
5 421
Баллы
113
Для чего нужен целый штат? Чтобы макрос {skip} заменялся на .* или [\w\W]* ?
Ну так замените вручную. Зачем тратить время на создание темы, когда можно потратить его на создание регулярки.
 
  • Спасибо
Реакции: udder

prodox

Client
Регистрация
28.08.2018
Сообщения
280
Благодарностей
55
Баллы
28
Проблема из ничего. Просто берете и вписываете прямо в регулярку. Все регулярки сохраняются в выпадающем меню в правом верхнем углу.

Очень сложная процедура. Нужно привлечь весь штат ZennoLab для решения данного вопроса.
C#:
<table class=tab<.* ><td class="zhopa<.* >><.* ><div>
А нужно чтобы так было:

73716

В ручную наверху менять бесполезно, так как после любых манипуляций Конструктор экранирует сразу символы в результирующем поле
 

prodox

Client
Регистрация
28.08.2018
Сообщения
280
Благодарностей
55
Баллы
28
Ну так замените вручную. Зачем тратить время на создание темы, когда можно потратить его на создание регулярки.
После любой манипуляции в других полях сразу экранируются символы и результата не видно. Вся польза от этого конструктора, что сразу можно видеть результат.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113
Думаю это предложение стоящее, особенно кто с регулярками на Вы :-)
Но конечно реализация может затянуться, как с конструктором xpath.
Мне бы то же хотелось что бы при вставке в поля текста с макросом {skip} автоматом генерировало [\w\W]*
честно говоря автор больно муторно написал описание, ну очень трудно вникнуть в суть.
вот на скрине попробовал визуально проще хотелку показать :-)

73719
 
  • Спасибо
Реакции: udder, prodox и phoenixs

one

Client
Регистрация
22.09.2015
Сообщения
6 790
Благодарностей
1 264
Баллы
113

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 328
Благодарностей
931
Баллы
113
Тоже после CD этого {skip} не хватает )) В целом, для тех, кто как выразились выше, с регулярками "на Вы", помогло бы (естественное, в полях "перед текстом" и т.п.).
 
Последнее редактирование:
  • Спасибо
Реакции: prodox

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 303
Благодарностей
5 421
Баллы
113
Наверно перегнул палку. Извините)
 
  • Спасибо
Реакции: udder

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113
А чем не устраивает .*? Чем {skip} будет лучше? На четыре символа длиннее...
все верно, если писать регулярку самому, но речь идет про автосоздание регулярки.
тут суть в том, что если что то меняешь в регулярке, ну например заменяешь 3 раза нужный текст на .*? , то регулярка становится кастомной и любое изменение в полях конструктора вызывает полное удаление результата замены и приходится повторно все менять, что не есть хорошо и если честно иногда меня бесит :-)
конечно гуру регулярок и без этого конструктора обходятся, ну и не гуру как я :-) я к примеру пользуюсь https://regex101.com/ , но ведь для кого-то то же сделали этот конструктор и вот прям реально эта фича была бы полезной в плане "по простому и быстренько состряпать рабочий вариант" :-)
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113
Чот я подумал, что даже было бы удобнее сделать кнопку, которая будет вставлять , в поле где стоит курсор, нужный макрос.
даже можно сделать на этой кнопке несколько полезных, часто используемых, коротких регулярок.
 

prodox

Client
Регистрация
28.08.2018
Сообщения
280
Благодарностей
55
Баллы
28
А чем не устраивает .*? Чем {skip} будет лучше? На четыре символа длиннее...
Конструктор экранирует любые символы регулярок при первой же манипуляции. Эффект визуального результата в итоге в ноль

По поводу, внедрения. Лично мне кажется, что это одна строчка кода типа Replace.

И макросов хорошо бы было несколько типов.
C переносами, табами и без,
и "ЖАДНЫЕ" ()
А также типа {anyword[слово]} - то есть это кусок любого когда где внутри есть какое то слово.

Мне кажется даже больше xPath и не понадобится.

А так конструктор регулярок клевый, нигде нет онлайн такого, с этой доработкой можно как отдельный продукт продавать ))
 
  • Спасибо
Реакции: phoenixs

prodox

Client
Регистрация
28.08.2018
Сообщения
280
Благодарностей
55
Баллы
28
Как узнать сколько голосов?
 
Регистрация
26.05.2020
Сообщения
459
Благодарностей
163
Баллы
43
А так конструктор регулярок клевый, нигде нет онлайн такого
Соглашусь. Я не умею пользоваться regex101 и его аналогами - мне там нихера непонятно, а вот зенновский конструктор крут!
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 673
Благодарностей
1 855
Баллы
113

radv

Client
Регистрация
11.05.2015
Сообщения
3 673
Благодарностей
1 855
Баллы
113

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113
Это потому что наверное, что XPath пути лень составлять? А на самом деле xpath надежнее чем регулярки. :az:
аккуратнее... щас прилетит налетит товарищ "все можно сделать на регулярках" и будет требовать доказательства :ca:
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 673
Благодарностей
1 855
Баллы
113
товарищ "все можно сделать на регулярках" и будет требовать доказательства :ca:
Конечно можно, никто и не спорит. :ap: Вопрос только в надежности работы кода. А вдруг в тексте лишний пробел или символ появится, тогда регулярка выдаст пустоту.
 
  • Спасибо
Реакции: lbvf65

lbvf65

Client
Регистрация
20.08.2020
Сообщения
438
Благодарностей
113
Баллы
43
Конечно можно, никто и не спорит. :ap: Вопрос только в надежности работы кода. А вдруг в тексте лишний пробел или символ появится, тогда регулярка выдаст пустоту.
Здесь вы правы :az:
 

prodox

Client
Регистрация
28.08.2018
Сообщения
280
Благодарностей
55
Баллы
28
в CD и даже регулярки не нужны, хотя там есть макрос {skip}, и он в большинстве случаев решал вопрос. без регулярок и xPath
Кто работал в CD знает что найти искомый текст с макросом {skip} в тексте до и тексте после занимает не больше минуты.

xPath это круто, знать регулярки тоже круто, знать DOM про теги и атрибуты тоже,
то что это все есть тоже круто
Кстати, в CD тоже регулярками можно, это кому очень хочется знания применить про теги атрибуты и наслаждаться своей крутостью.
Это равноценно как покупать шуруповерт чтобы 3 винта прикрутить.

Тут что не предложи - посылают изучать науки. Тогда уберите из рекламы, что купил и без знаний замочил.

Разговор какой то не по делу
Нравится голосуем не нравится не голосуем.
Ни xPath толком не доделан, ни конструктор действий, отсутствие счетчика совпадений вообще не дает понять то ты нашел или нет, упаришься по дереву искать.
И лишь конструктор регулярок в одном шаге от решения.
Время на работу меньше чем компиляция займет. Пять лет назад даже оказывается кто-то сделал
Ребята хватит уже меряться крутизной.

Кстати такие же поля Текст перед и Текст после с регулярками в конструкторе действий тоже сделает его законченнным инструментом.

Про "xPath" и "Парсить страницу" Даже не говорю

Предложен способ забыть наконец проблему поиска нужного элемента и знаняться другими функциями уже. Цена вопроса не более человеко часа и пару строк кода: Неэкранировать в результирующем поле [/w/W]* и .* и/или реплейс {skip} на [/w/W]*

Прошу не хейтить а по существу решить вопрос.


Есть же тут модераторы и администраторы которые могут девелоперам шепнуть.
Писать тикеты смысла нет, писал, там по сценарию не положено девелоперов беспокоить, если ТП посчитало что хрень написана
 
Последнее редактирование:
  • Спасибо
Реакции: lbvf65

prodox

Client
Регистрация
28.08.2018
Сообщения
280
Благодарностей
55
Баллы
28
Это потому что наверное, что XPath пути лень составлять? А на самом деле xpath надежнее чем регулярки. :az:
Кстати, в поиске по xPath, парсере и конструкторе действий поля ТЕКСТ До и ТЕКСТ ПОСЛЕ тоже бы не помешал.
 
  • Спасибо
Реакции: lbvf65

prodox

Client
Регистрация
28.08.2018
Сообщения
280
Благодарностей
55
Баллы
28
Вот вам пример. Есть Label зеленые линии
Красными линиями xPath ищет подсвеченные Labels
Как вот теперь взять соответствие Предыдущего Label и подсвеченного
Поочереди не получится, может отсутствовать группа или ничего не подсвечено, в данном случае 4 -я группа
Как вот без поля ТЕКСТ ДО и ТЕКСТ ПОСЛЕ, особенно если, нужно захватить и название группы тоже и разделитель влепить
Тут любой гений xPath похоже зависнет
А была бы возможность в конструкторе поле ТЕКСТ ДО и ТЕКСТ ПОСЛЕ и не важно CSS xPATH то задача бы легко решалась

Если бы был макрос {skip} то было бы тоже легко. Тут уже по очереди можно вытащить.
Я думаю что из тех кто на чайников любит бочку катить, сами не с полпинка спарсят данные

Я даже не представляю как гуру решают задачу с кучей одинаковых по атрибутам данных без указания с какого места искать, особенно если не известно заранее много факторов. В конструкторе регулярок, кстати, даже редактируя результирующее поле более 1 раза не дает вписать [\w\W]*

75463
 
Последнее редактирование:
  • Спасибо
Реакции: lbvf65

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)