Регулярные выражения

Russian main discussion
Post Reply
  • Author
  • Message
Offline
Posts: 294
Joined: Tue Jul 27, 2010 11:18 pm

Post by Serge Yolkin »

А у Вас разве правила из секции QuotesRE не перебивают остальные
Нет. Если с обычными квотесами пересекаются - не работают ни те, ни другие, а у фолдсов приоритет выше

Code: Select all

Folds:
513	3	#808080	0	`/*`	`*/`	``
перебивает

Code: Select all

QuotesRE:
4	`\&[A-Za-z]+;`	`\0=(1,#FF3399,0)`
4	`\&#x?\w+;`	`\0=(1,#FF3399,0)`
полюбому. Это для HTML.

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

гм, сейчас заметил, что по ссылке на тестовую версию - есть другая, от 21-ого числа, о которой Instructor тут не упоминал.
Но в ней у меня всё то же самое.
На всякий случай:
https://dl.dropboxusercontent.com/u/116 ... ad.test.7z

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

Post by opk44 »

Drugmix
У вас в реальном ahk.coder криво цвет закодирован (в "Folds:"). Вместо #808080 записано $808080. Оттого оно и не работает.

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

opk44
ой, это я пытался сменить с ${COMM} на #808080 как у Serge Yolkin.
Исправил на #808080 - на результат это не повлияло.

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

Post by opk44 »

Drugmix wrote:Исправил на #808080 - на результат это не повлияло.
Чтобы повлияло нужно редактор переоткрыть. И еще. Поскольку в архиве нет ini-шников, я не уверен куда у вас пишутся настройки. Я перед экспериментами установил опцию "Save settings INI file". Это конечно "антинаучно", но попробуйте и вы поменять способ хранения на INI файл, а заодно и cache удалите насильно.

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

opk44 wrote:Чтобы повлияло нужно редактор переоткрыть. И еще.
Я так и делал.
opk44 wrote:Поскольку в архиве нет ini-шников, я не уверен куда у вас пишутся настройки. Я перед экспериментами установил опцию "Save settings INI file". Это конечно "антинаучно", но попробуйте и вы поменять способ хранения на INI файл, а заодно и cache удалите насильно.
Спасибо, сохранение настроек в INI - помогло. А как cache удалять?

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

Post by opk44 »

Drugmix wrote:А как cache удалять?
Имеется в виду не некий общесистемный кэш или там файл подкачки, а совершенно конкретный cache от Coder-плагина.
В вашем архиве ему соответствует (AkelPad.test.7z)\AkelPad.test\AkelFiles\Plugs\Coder\cache
Удаляется как и любой другой файл с диска. Перед удалением AkelPad закрыть.

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

opk44
спасибо, а я его в ini искал.

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

Подскажите, пожалуйста, как найти любые первые символы строки от 1 до 10, например?
И как привести имя файла, например, LinesSelectCopyMoveDuplicate.js к виду LinesSelectCopy..js, ограничив максимальную длину пусть 20 символами и сохранив расширение (в т.ч. "не стандартные" 4 и более символов (типа .jpeg))? Не силен в регулярных выражениях, погуглил - так и не разобрался.

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Skif_off wrote:Подскажите, пожалуйста, как найти любые первые символы строки от 1 до 10, например?
По какому признаку искать-то?
Skif_off wrote:И как привести имя файла, например, LinesSelectCopyMoveDuplicate.js к виду LinesSelectCopy..js, ограничив максимальную длину пусть 20 символами и сохранив расширение (в т.ч. "не стандартные" 4 и более символов (типа .jpeg))?
Примерно так:

Code: Select all

var fileName = "LinesSelectCopyMoveDuplicate.js";
var fileNameShort = getShortFileName(fileName);
WScript.Echo(fileName + "\n" + fileNameShort + " [length: " + fileNameShort.length + "]");

function getShortFileName(fileName) {
	var maxLength = 18;
	var replacement = "…";
	if(fileName.length <= maxLength)
		return fileName;
	var ext = /\.([^.]+)$/.test(fileName) ? RegExp.$1 : "";
	if(ext && ext.length < maxLength*0.5)
		return fileName.substr(0, maxLength - ext.length - 1) + replacement + ext;
	var cutPos = Math.round(maxLength*0.6);
	return fileName.substr(0, cutPos) + replacement + fileName.slice(cutPos - maxLength + 1);
}

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

Post by opk44 »

Skif_off wrote:Подскажите, пожалуйста, как найти любые первые символы строки от 1 до 10, например?
1. Посмотрите "Руководство" (раздел 8: /AkelFiles/Docs/AkelHelp-Rus.htm#ch7).
2.

Code: Select all

^       Соответствует позиции начала строки. 
От этого и пляшем:
2.1) ^.{10} Первые 10 ЛЮБЫХ символов, но не вполне годится для коротких строк, т.к. символ новой строки тоже "ЛЮБОЙ" и будут захватываться несколько пустых строк.
2.2) ^[^\r]{10} Здесь ищутся ЛЮБЫЕ 10 символов за исключением символа "новой строки". Строки короче {10} символов игнорируются.
2.3) ^[^\r]{1,10} Этот чуть измененный второй вариант позволит из длинных строк брать первые 10, а из коротких (от 1 до 9 символов) все что есть.

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

Infocatcher wrote:По какому признаку искать-то?
Просто первые 10 симолов без каких-либо условий :)
Infocatcher wrote:Примерно так:
Спасибо, а как можно одним выражением? Instructor добавил возможность задавать количество символов в имени на вкладке, из AkelHistory-Rus.txt:
Добавлено: ручные параметры "TabNameFind" и "TabNameRep" - определяют шаблон поиска/замены регулярного выражения для имени вкладки в режиме MDI/PMDI.
Пытаюсь понять, как это можно сделать :)

opk44
Понял, спасибо, только насчет \r не совсем понял: . вроде не включает конец строки? Хотя, ЕМНИП, это было из мана к perl.

Добавлено:

Infocatcher, opk44, еще раз спасибо, но, пожалуй, забью - туплю безбожно с регулярными выражениями, подожду релиза и скопирую у кого-нибудь.
Можете порекомендовать какой-нибудь из конструкторов регулярных выражений, максимально похожий на AkelPad?

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Skif_off wrote:Спасибо, а как можно одним выражением?
Добавлено: ручные параметры "TabNameFind" и "TabNameRep" - определяют шаблон поиска/замены регулярного выражения для имени вкладки в режиме MDI/PMDI.
Странные настройки...
Теперь у нас две проблемы ©

Вот простой вариант:
TabNameFind = ^(.{14}).{2,}(.{10})$
TabNameRep = \1…\2

А вот поиск точки расширения с учетом того, что ее может не быть, у меня не заработал. Скажем,

Code: Select all

(?<=^.{12}).{2,}(?=\.[^\.]{1,9}$|.{9}$)
найдет не точку, а «.{9}$».

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Skif_off wrote:Пытаюсь понять, как это можно сделать :)
В AkelHelp-Rus.htm же указан пример использования.

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

Instructor
Посыпаю голову пеплом - открыл только AkelHistory-Rus.txt чтобы скопировать историю и проглядел, что AkelHelp-Rus.htm тоже обновлен, а проверить в голову не пришло.
Post Reply