Можно воспользоваться pcre.dll, которая собрана с поддержкой UTF-8 (а такая в уже готовом виде есть, к примеру, в файлах WinMerge).
Таким образом, для работы с юникодными строками из AkelPad надо будет выпонять WideCharToMultiByte() в UTF-8, и скармливать получившуюся строку соответствующим функциям pcre.
Поиск, скорее всего, будет регистрозависимый (для нелатинских букв).
Дело лишь за малым - реализовать вышесказанное в AkelPad. Кому не терпится за это взяться, кто первый?
Проблема в том, что если использовать AkelPad с флешке на другом компьютере, то нужно запускать Scripts-register, а на vista или seven сразу же проблемы начинаются. Всётаки было бы удобнее, еслибы регулярные выражения были бы в самой программе.
Tony wrote:Проблема в том, что если использовать AkelPad с флешке на другом компьютере, то нужно запускать Scripts-register, а на vista или seven сразу же проблемы начинаются. Всётаки было бы удобнее, еслибы регулярные выражения были бы в самой программе.
как-то раз столкнулся именно с такой проблемой, акел на флешке и ни о каком Script-register не могло быть и речи
Я не знаю чем именно Вы ищете: встроеным поиском, или скриптом. Оба движка работают на JavaScript-подобных регулярках(не знаю, чьего они стандарта). И регулярка вполне себе понятная.
токены [] в регулярках - означают что то что внутри - список искомого.
\u#### означает поиск символа по его коду(Юникодному), допускается везде в регулярках,
- - знак диапазона, допускается исключительно в [], иначе считается обычным знаком
. - любой символ
* - квантизатор 0 и больше(т.е. .* означает "захватить всё" при жадном захвате).
Всё тут читаемо. Выражение читается так.
Захватить 1 символ, код которого от 0 до 8 либо, 11, 12, 14 до 31 включительно), дальше сколько есть любых символов.
(9 - текстовый символ табуляции, 10,13 - перенос строки, >31 - текстовый знаки в соответствии с ANSI).
А теперь вопрос: Вы внимательно переписывали? Ибо вот та вот "." - лишняя. Без нее регулярка при замене на пустую строку просто удаляла байты, которым явно не место в текстовых файлах.
Естественно, это не есть универсальное решение. Ибо бинарники на то и бинарники что могут содержать любые символы, в том числе вполне читаемые текстовые последовательности.
Вопросец по регуляркам /задаю здесь, т.к. другие в основном здесь задавали, а хотелось бы выделить эти вопросы в отдельную тему и учиться!)/
Значит есть строка, в начале могут быть пробелы/табуляции, а могут не быть. И наоборот, все эти "пустые символы" могут быть, а текста нет.
Так вот нужна такая регулярка, которая бы возвращала в $1 все "пустые символы" из начала строки, а в $2 - все значащие символы, идущие после начальных "пустых".