Конструктор регулярных выражений
-
@DrPrime - вот так работает <p\ class="pding10\ lheight20\ large">([\w\W]*)</p>
-
@DrPrime html гораздо удобнее парсить по xpath. В проекте xpath от меня и регулярка, которую предложил @Turutur
-
@Turutur А как почистить. Нужно убрать двойные лишние пробелы и переносы строки. Пробовал /r/n заменять на пустоту, не получается
-
@support - да по xpath - хорошо, если соответствует определенному классу - если не разбито по коду - через регулярку немного сложнее - требуется дополнительная обработка!!!! Кстати о ней!!! - немного не согласованны действия в BAS для обработки текстов - например - невозможно обработать список действием заменить строку - пока не объеденишь список в строку - очень сложно для простых юзеров как мы - я временами не догоняю как так - вот сейчас на этом примере - я регуляркой <p\ class="pding10\ lheight20\ large">([\w\W])</p>*
вытаскиваю текст
[
"
Доставка по ВСІЙ Україні<br>
<br>
Сорт - Королева Анна<br>високоврожайний<br>
середньоранній<br>
столовий<br>
стійкий проти вірусів<br>
<br>
! Власне виробництво за німецькою технологією вирощування насіннєвої картоплі<br>
! Налагоджена співпраця з провідними селекційними компаніями Європи -- "Solana" та "Den Hartigh" --<br>
<br>
Пропонуємо також багато інших сортів.<br>
Телефонуйте - ДОПОМОЖЕМО обрати оптимальний сорт для ВАШИХ потреб. "
],который автоматически записывается в переменную как список
а дальше пока я его не объеденю в строку - я не могу ничего в нем найти и заменить - а это ведь не правильно! - @support - сделайте пожалуйста возможность обработки списков и вообще любых текстов - потому что проблемы возникали и с удалением дубликатов - или разъясните как устроено - да и если не сложно в действиях заменить элементарные подсказки типа убрать переносы строк - убрать лишние проелы и так далее.... ну вот опять меня понесло - просто реально такую ситуцию обсасывал несколько дней - и щас т о же самое"$.*^" - пробовал заменить на "\s" - не работает
"\n\r" - на "" - не работает, как в принципе и другие варианты -а по вашему примеру - получили xpash - просто в переменную - не в список - но с ней опять же ничего не получается сделать - в чем загвоздка - уже просто интересно???
-
@DrPrime - у меня пока только получилось объеденить в строку и убрать все пробелы)
-
а дальше пока я его не объеденю в строку - я не могу ничего в нем найти и заменить - а это ведь не правильно!
Вы же понимаете, что со списком работает действие foreach и позволяет обрабатывать каждый элемент отдельно?
проблемы возникали и с удалением дубликатов
Какие?
или разъясните как устроено
Функция удаление дубликатов удаляет повторы из списка. Как вы ожидаете что она будет работать.
убрать переносы строк
убрать переносы строк из строки можно обычным действием заменить. Я уже показывал в другой ветке форума как это делать.
Убрать переносы строк из каждого элемента списка можно пройдясь по нему действием Foreach
и щас т о же самое
А что случилось?
"\n\r" - на "" - не работает, как в принципе и другие варианты -
Странно, у меня работает, пришлите проект.
по вашему примеру - получили xpash - просто в переменную - не в список - но с ней опять же ничего не получается сделать - в чем загвоздка
Что не получается?
-
@support said in Конструктор регулярных выражений:
Какие?
или разъясните как устроено
Функция удаление дубликатов удаляет повторы из списка. Как вы ожидаете что она будет работать.
вот проект 0_1475916493058_test_.xml - объясните что не так - а то походу сам не разберусь
@support said in Конструктор регулярных выражений:
Странно, у меня работает, пришлите проект.
по вашему примеру - получили xpash - просто в переменную - не в список - но с ней опять же ничего не получается сделать - в чем загвоздка
Что не получается?
вот второй пример\ы 0_1475918159724_parserssclass.xml - там я два примера использовал - первый "\n\r" - на "" - не проверил - так как вводит в заблуждение отображения текста полученного xpath - в инспекторе переменных он выглядит как форматированный текст с переносом строк, пустыми строками - но при записи в файл понимаешь, что это всего лишь строка с лишними пробелами, поэтому использую второй вариант
"\s{2,}" на "\s" - то же нет результата.@support - я не пытаюсь обозначить свою точку зрения - я реально ищу помощи - хочу разобраться - и такие простые вещи вводят в ступор = вроде все очевидно - указал данные для фильтрации дублей - дубли удалились - ан нет), попытался убрать пробелы - не тут то было))) - объясните пожалуйста
-
вот проект 0_1475916493058_test_.xml - объясните что не так - а то походу сам не разберусь
На момент когда выполняется действие удалить дубликаты в списке есть 1 элемент. Соответственно это действие не имеет смысла
вот второй пример\ы 0_1475918159724_parserssclass.xml
вместо
"\n\r"
нужно использовать"\r\n"
и"\n"
иногда символы окончания строки бывают такими, иногда такими.
Второе действие не работает, так как "заменить" не работает с регулярками.объясните пожалуйста
-
@support said in Конструктор регулярных выражений:
На момент когда выполняется действие удалить дубликаты в списке есть 1 элемент. Соответственно это действие не имеет смысла
@support - действие не имеет смысла для программного кода - но имеет смысл для меня - в том то и дело - как реализовать так чтобы и программа понимала, что нужно удалить повторяющиеся значения - это нужно в том случае, если я не использую Фореач - а не использую я его потому, что это долгий и нудный процесс - например мне нужно спарсить сначала группы в одноклассниках по целевым запросам - их 100 - а потом спарсить с них пользователей - по 100 с каждой группы - а это 100 загрузок страниц - плюс еще и фореач - по 100 по каждому элементу - а это 10000 действий имеющих временные затраты - ИЛИ я это сделаю через xpath или регуляркой, а затем удялю дубли - скорость выполнения возрастает в разы!!! Вот для чего все это нужно..
Если это один элемент не имеющий смысла- как его разделить на множество отдельных и отфильтровать?
-
@support said in Конструктор регулярных выражений:
Второе действие не работает, так как "заменить" не работает с регулярками.
подскажите вариант решения - удаления лишних пробелов - пробел вначале строки, пробел в конце строки, 2 и более пробелов идущих подряд.
-
действие не имеет смысла для программного кода - но имеет смысл для меня
Есть действия, которые выполняются на списках, есть действия которые выполняются на строках. С этим ничего не поделаешь.
как реализовать так чтобы и программа понимала, что нужно удалить повторяющиеся значения
http://community.bablosoft.com/uploads/files/1475927491987-removeduplicates.xml
Фореач - а не использую я его потому, что это долгий и нудный процесс - например мне нужно спарсить сначала группы в одноклассниках по целевым запросам - их 100 - а потом спарсить с них пользователей - по 100 с каждой группы - а это 100 загрузок страниц - плюс еще и фореач - по 100 по каждому элементу - а это 10000 действий имеющих временные затраты - ИЛИ я это сделаю через xpath или регуляркой, а затем удялю дубли - скорость выполнения возрастает в разы!!! Вот для чего все это нужно..
Я про цикл по элементам списка, а не по элементам на странице. Он не требует существенных временных затрат.
подскажите вариант решения - удаления лишних пробелов - пробел вначале строки, пробел в конце строки, 2 и более пробелов идущих подряд.
Пожалуйста
-
@support Спасибо, с пробелами помогло. А как еще убрать переносы строк? Вот пример с моим текстом 0_1475939323425_1475935789915-removespaces.xml
-
@support said in Конструктор регулярных выражений:
Пожалуйста
0_1475935789462_removespaces.xmlспасибо Большое - что даете примеры и только не понятно - как бы так логически воспринимать программу - типа интуитивно понятный интерфейс. В примере с 0_1475935789462_removespaces.xml - действие "удалить по значению" - ни содержит в себе ничего!!! - даже пустых пробелов нет, но все же как то удаляет повторяющиеся пробелы - вернее пустые значения спарсеного списка, тогда не понятно почему он не удаляет вообще все пробелы в тексте???? @support пожалуйста поймите, что я хочу до Вас донести!!!
Поставьте себя на наше место!!! - Какими логическими умозаключениями я прийду к этим действиям самостоятельно??? Никакими!!! Пока Вы не поможете! Или я случайно так не сделаю!
@support я же просто предлагаю давать готовые решения в BAS в виде действий! - Ведь Вас же не затруднит, например добавить в BAS всего пару действий 1 - удалить пустые строки!!! 2-е удалить повторяющиеся пробелы или как -то так, то есть сделать то, что Вы итак делаете! Ведь согласитесь, для Вас это будет гораздо быстрее чем часами переписываться с нами. Это я упрямый и пытаюсь разобраться - другие просто уйдут ничего не поняв.
-
@support said in Конструктор регулярных выражений:
http://community.bablosoft.com/uploads/files/1475927491987-removeduplicates.xml
вот еще такой пример из файла выше -
почему не происходит запись данных в файл - я понимаю, что есть действие записать список в файл, но список это то же данные файловой системы, по крайней мере для меня, ведь я в винде использую как текстовые файлы так и списки - почему не работает этот вариант???? Главное файл создает, а писать в него не хочет!Вот таким образом небольшое количество вот таких ситуаций в рандомной перестановке рождает большое количество непоняток!!! То есть сидишь и долбишься в стену - так попробовал - не получается так то же и так и так и так ))) и в два клика создать скрипт уже не получается пока - к сожалению, поэтому и пишу петиции, чтобы может в ближайшем будущем начало получаться!
-
@Turutur said in Конструктор регулярных выражений:
1475927491987-removeduplicates.xml
запись в файл это построчная запись на сколько я понимаю и список можно записать построчно через фореч или "запись списка в файл" очень прекрасно работает
то есть чтобы из списка записалось нужно указать "индексный" номер текстовой ячейки в сприске. А не записывает он ничего так как по сути вы ничего не предаете для записи. Возможно несколько сумбурно написано)
-
@DrPrime На сколько я понял нужно отчистить от тегов и построчно записать в файл.
Это можно реализовать через выполнить код. (открыл недавно для себя очуменная штука)
сам проект 0_1476034708871_убрать коды и записать построчно.xmlvar s = ([[TEMPLATE_RESULT]]);
s = s.replace(/<br>/g, "\r\n"); заменить на переносы
s = s.replace(/<.*?>/g, ""); убрать остаток тегов
s = s.replace(/[" "]{3,}/g, ""); убрать лишине пробелы более 3 шт[[OTVET]]=s
Возможно сам код можно упростить, или как то подругому сделать, но это самое простое и понятное для меня что нашел и что работает
-
@Стас
Нужно вообще убрать переносы строк, что бы весь текст был в одну строку, а то при сохранении капец происходит
-
@DrPrime 0_1476035430166_убрать коды и записать в строку.xml
тогда нужно оставить только это s = s.replace(/<.*?>/g, ""); убрать остаток тегов
-
А код на каком языке? Яваскрипт? А то пробовал запускать что то типа алерт и т.п. - ошибки выводило
-
@DrPrime яваскрипт а что за ошибка? вроде нормально работало