поиск и замена

Russian main discussion
  • Author
  • Message
YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

pol-zhuk wrote:прогуглил и даже немного разобрался в этих закорючках :D "+" был один лишний
Плюс там не лишний, как раз, иначе регэксп добавит Вам нули туда, где они не должны вставляться.
pol-zhuk wrote: понимаю, что можно вручную теперь менять " 000" на " 0", но есть ли более быстрый способ не реагировать на нуль в одну формулу? :roll:
Поточнее сформулируйте вопрос, а то не совсем понятно, что требуется.
pol-zhuk wrote: и можно ли такую замену производить сразу в нескольких файлах?
Да, есть специальная опция в окне "Замена": "Направление->Все файлы"

Offline
Posts: 381
Joined: Wed Sep 28, 2011 3:05 pm

Post by Cuprum »

del
Уже ответили :)

Offline
Posts: 4
Joined: Thu Nov 05, 2015 8:05 am

Post by pol-zhuk »

YuS wrote: Плюс там не лишний, как раз, иначе регэксп добавит Вам нули туда, где они не должны вставляться.
странно; выдавал мне синтаксическую ошибку до тех пор, пока не удалил один из плюсов :?
YuS wrote: Поточнее сформулируйте вопрос, а то не совсем понятно, что требуется.
заметил, что он начал "0" обращать в "000", соответственно, описал, как я назад к нулю привел; ну ладно, раз правильную формулу у меня не получается использовать, то буду так :roll:
YuS wrote: Да, есть специальная опция в окне "Замена": "Направление->Все файлы"


под "Все файлы" имеется ввиду все открытые в данный момент вкладки?

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

pol-zhuk wrote: странно; выдавал мне синтаксическую ошибку до тех пор, пока не удалил один из плюсов :?
А версия AP у Вас какая используется? Не должно быть ошибки, если версия актуальная.
pol-zhuk wrote: заметил, что он начал "0" обращать в "000", соответственно, описал, как я назад к нулю привел;
А, вот Вы о чем... тогда так:

Code: Select all

Что: ((?:\(|s )[1-9]\d*+)(?!d|s)
Чем: \1\x300
pol-zhuk wrote: под "Все файлы" имеется ввиду все открытые в данный момент вкладки?
Да, естественно. ИИ у AP не настолько развит, чтобы самостоятельно определять в какие файлы необходимо вносить изменения. :wink:

Offline
Posts: 157
Joined: Thu Nov 26, 2015 8:03 pm
Location: Rostov-on-Don

Регулярные выражения для AkelPad в примерах

Post by Eskander88 »

Ув. Форумчане!

«Лучше один раз увидеть, чем сто раз в мануал глянуть.»

Просим всех кто не безразличен к работе регулярных выражений в

AkelPad писать здесь свои примеры.

Данные примеры помогут лучше освоить данный функционал программы.

Делимся опытом.
Last edited by Eskander88 on Thu Nov 26, 2015 8:24 pm, edited 1 time in total.

Offline
Posts: 157
Joined: Thu Nov 26, 2015 8:03 pm
Location: Rostov-on-Don

Post by Eskander88 »

Дано:
Текстовой файл с набором одиночных тегов:

Code: Select all

Статьи <site.com/articles.htm>
Новости <site.com/news.htm>
Контакты <site.com/contacts.htm>
Задача:

Найти и заменить теги. Я буду просто использовать "поиск и замену" (Ctrl + H) для того, чтобы удалить все теги, т.е. заменять на пустую строку


1) Пишем в поле "Что ищем", говорим тем самым, что нужно найти одну левую скобу.

Code: Select all

<{1}
в фигурных скобках после символа указано, количество повторения символа.

2) Сообщаем, что нужно найти две скобки: одну левую, и одну правую.
это регулярное выражение удалит "<>", но пропустит строки вроде "<img>"

Code: Select all

<{1}>{1}
3) Сообщаем что нужно удалить набор символов, которые содержат в начале одну левую скобку, далее любое количество или ноль символов до символа, которым собственно является правая скобка.

Code: Select all

<{1}.*>{1}

Вот такая комбинация команд для регулярки

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Eskander88 wrote:

Code: Select all

<{1}.*>{1}
Вот такая комбинация команд для регулярки
1. Зачем изобретать велосипед? Есть масса литературы по регуляркам, лучше изучать их по книжкам.
2. Прежде чем публиковать примеры, проверяйте их. В частности, процитированное выше будет у Вас работать совсем не так, как Вы описали... он просто удалит всё, находящееся в тексте между первым символом "<" и последним символом">".

Offline
Posts: 1
Joined: Sat Nov 28, 2015 6:33 pm

Post by m_s_b »

YuS wrote:
Eskander88 wrote: 1. Зачем изобретать велосипед? Есть масса литературы по регуляркам, лучше изучать их по книжкам..
Вы безусловно правы Но для того чтобы проехать от пункта А до Б, необязательно покупать машину и получать водительские права, а достаточно воспользоваться общественным транспортом, либо попросить друга, имеющего права и машину. Чтобы начать использовать на практике регулярные выражения достаточно посмотреть на 2 -3 примера.
YuS wrote:
Eskander88 wrote: 2. Прежде чем публиковать примеры, проверяйте их. В частности, процитированное выше будет у Вас работать совсем не так, как Вы описали... он просто удалит всё, находящееся в тексте между первым символом "<" и последним символом">".
Вы правы.
Правильный код -

Code: Select all

<{1}.*?>{1}
для новой редакции AkelPad.

Offline
Posts: 381
Joined: Wed Sep 28, 2011 3:05 pm

Post by Cuprum »

m_s_b
Чтобы начать использовать на практике регулярные выражения достаточно посмотреть на 2 -3 примера.
:D
Чтобы применять регулярки на практике надо знать синтаксис и механизм работы регулярных выражений. YuS как гуру регэкспов подтвердит :wink:

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Cuprum wrote: Чтобы применять регулярки на практике надо знать синтаксис и механизм работы регулярных выражений. YuS как гуру регэкспов подтвердит :wink:
Ну, гуру - это слишком сильно сказано, до гуру надо ещё расти :)
А по сути да, всё верно. Так просто они не дадутся, по двум-трем примерам...
Да и вообще, по примерам почти невозможно будет изучить и понять, что же обозначают все эти черточки, скобочки, слеши, точки, звездочки и прочее... для столкнувшегося с ними впервые, это будет просто китайская грамота. :)

А вот тем кто возьмется изучать, помощь на примерах потребуется в любом случае, но для этого есть уже тема, там вполне можно и вопрос задать, и помощь получить.

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

m_s_b wrote: Правильный код -

Code: Select all

<{1}.*?>{1}
для новой редакции AkelPad.
Применение {1} -избыточно, достаточно наличия самого символа:

Code: Select all

<.*?>

Offline
Posts: 157
Joined: Thu Nov 26, 2015 8:03 pm
Location: Rostov-on-Don

Post by Eskander88 »

YuS wrote:
Eskander88 wrote:

Code: Select all

<{1}.*>{1}
Вот такая комбинация команд для регулярки
1. Зачем изобретать велосипед? Есть масса литературы по регуляркам, лучше изучать их по книжкам.
2. Прежде чем публиковать примеры, проверяйте их. В частности, процитированное выше будет у Вас работать совсем не так, как Вы описали... он просто удалит всё, находящееся в тексте между первым символом "<" и последним символом">".
В общем-то всё работает. У меня просто сборка старенькая. Пример был проверен. А зачем нужен символ "восклицательного знака" не знаю, если есть причины то подскажите. Старался поэтапно разжёвывать, чтобы даже новичок вникал.

:) Дело не в велосипеде! Надо ж как-то рулить..

AkelPad использую как программу для преформатирования текста и т.п. Предлагаю ещё одну задачу, т.е. хочу спросить - "ну раз часто на вопрос как пользоваться RegExp рекомендуют прочитать массу литературы". Собственно, наверное кто-то и читал (о чём конечно ему можно позавидовать).

Вот такая у меня задача:

Есть список путей к файлам на жёстком диске.
Каждый путь к файлу расположен на отдельной строке.
Общее количество 118780 файлов, т.е. 1118780 строк в файле соответственно.
Нужно заменить все строки, где нет слова "шаблон" или "template" на пустую строку.
Что по сути приведёт к удалению из списка путей, в название которых, не входит одно из указанных слов.

Список такого вида:

Code: Select all

...
D:\SRC\Joom\Joomla_2.5.18-Stable-Full_Package_ru\administrator\components\com_banners\models\forms\download.xml
D:\SRC\Joom\Joomla_2.5.18-Stable-Full_Package_ru\administrator\components\com_banners\models\forms\index.html
D:\SRC\Joom\Joomla_2.5.18-Stable-Full_Package_ru\administrator\components\com_banners\sql\index.html
D:\SRC\Joom\Joomla_2.5.18-Stable-Full_Package_ru\administrator\components\com_banners\sql\install.mysql.utf8.sql
D:\SRC\Joom\Joomla_2.5.18-Stable-Full_Package_ru\administrator\components\com_banners\sql\uninstall.mysql.utf8.sql
D:\SRC\Joom\Joomla_2.5.18-Stable-Full_Package_ru(EDITION)\CSS\ШАБЛОН\main\style.css
D:\SRC\Joom\Joomla_2.5.18-Stable-Full_Package_ru\administrator\components\com_banners\tables\banner.php
D:\SRC\Joom\Joomla_2.5.18-Stable-Full_Package_ru\administrator\components\com_banners\tables\client.php
... и т.д
К примеру указывайте массу литературы в килограммах. :wink: Томик Ленина, особо отличившимся как в сов. время за старания, не обещаю, - «кому он в общем-то нужен... »

Ну а рабочий пример, ляжет бесценным грузом в памяти и трудах сообщества.

Offline
Posts: 381
Joined: Wed Sep 28, 2011 3:05 pm

Post by Cuprum »

Eskander88
Вообще то это вопрос для спец. темы.

Используйте скрипт SearchReplace.js, он есть в поставке Акелпада.
Настройки поиска:
Что: (^.+$)
Чем: if(/(ШАБЛОН)|(template)/.test($1)) return $1;
[x] Регулярные выражения
[x] Многострочно
[x] Заменять на функцию
Направление
[.] C начала
Нажимайте [Заменить все]
В итоге, в файле останутся только те строки, в которых есть слово ШАБЛОН или template.

Offline
Posts: 157
Joined: Thu Nov 26, 2015 8:03 pm
Location: Rostov-on-Don

Post by Eskander88 »

Cuprum wrote:Eskander88
Используйте скрипт SearchReplace.js, он есть в поставке Акелпада.
Как вариант тоже сойдёт. Спасибо.

Только хотелось бы в "Регулярных выражениях".

«.. соберешь сборник томов на одну тему, - а выходит, - что уже пора и другую изучать»

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

Eskander88, Cuprum
Можно даже и без функции обойтись.
Есть же ещё "стандартный" скрипт LinesFilter.js (фильтр строк с регулярными выражениями)
Настройки:
Строка содержит: template|ШАБЛОН
[x] Регулярные выражения
[*] Оставить строки
Post Reply