Page 6 of 28
Posted: Tue Nov 05, 2013 3:19 am
by Serge Yolkin
Skif_off wrote:Можете порекомендовать какой-нибудь из конструкторов регулярных выражений, максимально похожий на AkelPad?
Если "похожий" - в смысле результата, а не внешнего вида, то тут в пору прсить, чтобы
Instructor плагин написал, использующий ту же реализацию. Кстати, а QSearch какую реализацию регулярок использует?
Posted: Tue Nov 05, 2013 9:11 am
by DV
Serge Yolkin wrote:Кстати, а QSearch какую реализацию регулярок использует?
Регулярки - акелпадовские.
QSearch-Rus.txt wrote:v.5.2 (Ноябрь 2012)
* продолжение 5.1
+ поиск с регулярными выражениями (используя их реализацию в AkelPad)
Posted: Tue Nov 05, 2013 9:22 am
by Serge Yolkin
DV
Ну, практически готовый, если не конструктор, то калькулятор регулярных выражений...
Posted: Thu Nov 07, 2013 6:28 pm
by YuS
Планируется ли реализация поиска по условию:
Code: Select all
(?(?=если)то|иначе)
(?(n)то|иначе)
?
Иногда очень не хватает...
Posted: Thu Nov 07, 2013 6:40 pm
by Drugmix
YuS
они же вроде уже реализованы? В справке посмотри (?=) и (?!), а также lookbehind'ы.
Posted: Thu Nov 07, 2013 6:45 pm
by YuS
Drugmix wrote:YuS
они же вроде уже реализованы? В справке посмотри (?=) и (?!) (а также lookbehind'ы.
Это шаблоны, самые обычные шаблоны просмотра вперед/назад, а поиск по условию - немного другую функцию выполняет.
Posted: Thu Nov 07, 2013 7:00 pm
by YuS
Infocatcher wrote:
А вот поиск точки расширения с учетом того, что ее может не быть, у меня не заработал. Скажем,
Code: Select all
(?<=^.{12}).{2,}(?=\.[^\.]{1,9}$|.{9}$)
найдет не точку, а «.{9}$».
Работал бы поиск по условию, можно было бы как-то так организовать:
Что: (^[^\n.]{20})[^.]*(\.)?((?(2).{1,}|)$)
Чем: \1..\2\3
Это относительно вот этого вопроса:
как привести имя файла, например, LinesSelectCopyMoveDuplicate.js к виду LinesSelectCopy..js, ограничив максимальную длину пусть 20 символами и сохранив расширение (в т.ч. "не стандартные" 4 и более символов (типа .jpeg))?
Posted: Fri Nov 15, 2013 1:26 pm
by yozhic
Здесь текст и регексп. Akel версии 4.8.6 dev (скачал сегодня по ссылке тестовая, от 21-го кажется). Ничего не находит. А должно. Проверял в других редакторах.
Posted: Fri Nov 15, 2013 3:39 pm
by Instructor
yozhic
AkelHelp-Rus.htm wrote:- Квантификаторы регулярных выражений (*, +, {n,}) являются по умолчанию жадными (кроме одинарной точки, например, ".*" или ".{5,10}"). Чтобы сделать их нежадными (старый принцип), используется "?" после квантификатора, например, "\d*?".
- Жадные регулярные выражения AkelPad'а выполняются последовательно. Например, шаблон "ab?b" в "abc" не имеет совпадений, т.к. "ab?" соответствует "ab" и последующее "b" не имеет совпадений. Корректный шаблон, в данном случае, будет "abb?".
Posted: Fri Nov 15, 2013 4:16 pm
by yozhic
Instructor
Спасибо, всё понял. Пошёл повторять матчасть.
Posted: Sun Dec 01, 2013 11:07 pm
by Skif_off
Прошу прощения, несколько затупил, подскажите, пожалуйста, как добавить к, например, такому выражению \\[a-z]*@[a-z]+ условие "но всего не менее 3х символов"?
Posted: Mon Dec 02, 2013 6:25 pm
by YuS
Skif_off wrote:как добавить к, например, такому выражению \\[a-z]*@[a-z]+ условие "но всего не менее 3х символов"?
Если я правильно понял вопрос, то:
если же речь обо всем выражении целиком, то там и так должно быть, при самом минимуме совпадений, 3 символа:
"\@" - это два символа и "[a-z]+" - это, как минимум, 1 символ, т.е. итого 3
Posted: Mon Dec 02, 2013 7:49 pm
by Skif_off
YuS
Речь о выражении целиком, торопился сформулировать мысль и написал первое пришедшее в голову число, пусть будет n.
Posted: Mon Dec 02, 2013 8:40 pm
by YuS
Skif_off wrote:Речь о выражении целиком, торопился сформулировать мысль и написал первое пришедшее в голову число, пусть будет n.
Тогда на целое выражение сделать такое условие не получится, придется, всё же менять само выражение, как-то так:
ну, а если требуется необходимое количество именно по всем символьным классам (остальные символы ведь указаны жестко), то:
если же применить подобное к целому выражению:
то получится, что выражение должно совпасть n раз и более.
Т.о., по заданному условию, это не совсем то, что хотели получить, значит необходимо оперировать указанием количества по каждому символу выражения или символьному классу.
Posted: Mon Dec 02, 2013 10:02 pm
by Skif_off
YuS
Тогда не захватится \xxx@x
не захватится \@xxx
Суть уловил, спасибо за пояснения, заодно нашел недочет в подсветке LaTeX
