Обсуждение программ nnCron и nnCron LITE
by Mitry » Wed, 01 Aug 2007, 08:47
WORDS-LIKE показывает, что есть слово RE-REPLACE - очень похоже, что это замена в строке с помощью regexp-ов. Но ни в хелпе ни в исходниках его описания нет, а оно решило бы половину проблем, которые возникают всвязи с обработкой строк. Нельзя ли прояснить формат вызова RE-REPLACE ?
-
Mitry
-
- Posts: 9
- Joined: Thu, 23 Sep 2004, 02:26
-
by VoidVolker » Wed, 01 Aug 2007, 23:17
Какие такие проблемы с обработкой строк?
-

VoidVolker
- Site Admin
-
- Posts: 2907
- Joined: Tue, 25 Apr 2006, 17:56
by Mitry » Wed, 01 Aug 2007, 23:36
VoidVolker wrote:Какие такие проблемы с обработкой строк?
Например, эти "пpодвинутые" сpедства pаботы со стpоками. RegExp's - универсальный, стандартный и простой способ сделать тоже самое и много больше. К тому же, эта фича, кажется, уже реализована, но не документирована :(
-
Mitry
-
- Posts: 9
- Joined: Thu, 23 Sep 2004, 02:26
-
by AlikasS » Thu, 02 Aug 2007, 02:25
Mitry wrote:WORDS-LIKE показывает, что есть слово RE-REPLACE - очень похоже, что это замена в строке с помощью regexp-ов. Но ни в хелпе ни в исходниках его описания нет, а оно решило бы половину проблем, которые возникают всвязи с обработкой строк. Нельзя ли прояснить формат вызова RE-REPLACE ?
Mitry wrote:... К тому же, эта фича, кажется, уже реализована, но не документирована 
ничего не реализовано.
из исходников
 re.f
- Code: Select all
: RE-REPLACE { atext utext apat upat arep urep \ buf -- a u } ;
хотя..., можешь использовать вместо шести DROP подряд
-

AlikasS
-
- Posts: 1439
- Joined: Wed, 28 Jun 2006, 05:39
- Location: Khabarovsk
-
by VoidVolker » Thu, 02 Aug 2007, 11:09
Например, эти "пpодвинутые" сpедства pаботы со стpоками. RegExp's - универсальный, стандартный и простой способ сделать тоже самое и много больше. К тому же, эта фича, кажется, уже реализована, но не документирована 
"более простой" - регекспом уменшить длину строки на три? Это совершенно разные вещи. "Продвинутые средства ..." - это более низкий уровень, регекспы - более высокий, и в их основе есть "Продвинутые средства ..." , а значит они более сложные, более медленные. Если тебе нужен конкретный инструмент для решения конкретной задачи - напиши его, ты ничем не ограничен. Не знаешь как - спроси.
-

VoidVolker
- Site Admin
-
- Posts: 2907
- Joined: Tue, 25 Apr 2006, 17:56
by Mitry » Thu, 02 Aug 2007, 12:27
AlikasS wrote:ничего не реализовано. из исходников :) re.f - Code: Select all
: RE-REPLACE { atext utext apat upat arep urep \ buf -- a u } ;
А где такие исходники берут? В http://www.nncron.ru/download/src.rar даже такого нет.
-
Mitry
-
- Posts: 9
- Joined: Thu, 23 Sep 2004, 02:26
-
by VoidVolker » Thu, 02 Aug 2007, 23:25
~nn\lib\re.f
-

VoidVolker
- Site Admin
-
- Posts: 2907
- Joined: Tue, 25 Apr 2006, 17:56
by AlikasS » Fri, 03 Aug 2007, 01:31
-

AlikasS
-
- Posts: 1439
- Joined: Wed, 28 Jun 2006, 05:39
- Location: Khabarovsk
-
by VoidVolker » Fri, 03 Aug 2007, 10:21
Я могу его написать - но т.к. с регекспами почти не работаю, нужен хотя бы образец, того как он должен работать - а точнее пример, а лучше несколько, может там есть какие-ть подводные булыжники, ведь не просто так авторы его оставили пустым, хотя может просто и не успели. Вообщем жду примеров того, как он должн работать.
-

VoidVolker
- Site Admin
-
- Posts: 2907
- Joined: Tue, 25 Apr 2006, 17:56
by Mitry » Fri, 03 Aug 2007, 12:08
VoidVolker wrote:ведь не просто так авторы его оставили пустым, хотя может просто и не успели. Вообщем жду примеров того, как он должн работать.
Подозреваю, что re_replace просто нет в библиотеке от Colorer'а, которая использовалась для регекспов. Хотя есть полностью функциональные, небольшие и свободные библиотеки (Кстати, у них есть документация с примерами использования):
Кде-то здесь в форуме проскакивало, что, возможно, Николас изменит поддержку регекспов. Без этого переписывать все это на forth - тот ещё геморой.
-
Mitry
-
- Posts: 9
- Joined: Thu, 23 Sep 2004, 02:26
-
by VoidVolker » Fri, 03 Aug 2007, 17:32
переписывать все это на forth - тот ещё геморой http://spf.sourceforge.net/devel/~ygrek/lib/re/re.fХотя есть полностью функциональные, небольшие и свободные библиотеки (Кстати, у них есть документация с примерами использования): Pcre: Perl-compatible regular-expression library Posix compliant regular expression library Henry Spencer's regular expression library Rx for Windows
Тут еще проще - качаем длл, доку, и вызваем нужные функции из длл.
-

VoidVolker
- Site Admin
-
- Posts: 2907
- Joined: Tue, 25 Apr 2006, 17:56
by dothen » Mon, 01 Feb 2016, 07:10
Замена текста в файлах и в строках(посредством tmp файла) с помощью регулярных выражений в JScript. - Code: Select all
<% \ Замена текста в файлах и в строках(посредством tmp файла) \ с помощью регулярных выражений в JScript.
2VARIABLE au1 \ Исходная строка или имя файла. 2VARIABLE au2 \ Регулярное выражение. 2VARIABLE au3 \ Строка для замены (au2 заменить на au3).
: ReplaceReFile ( a1 u1 a2 u2 a3 u3 -- ) \ Поиск и замена в файле (a1 u1 полное имя файла). au3 2! au2 2! S" \" S" \\" StringReplace au1 2! <JScript> var FSO,File,TempStr; FSO = WScript.CreateObject("Scripting.FileSystemObject"); File = FSO.OpenTextFile("%au1 2@%", 1); TempStr = File.ReadAll(); File.Close(); File = FSO.OpenTextFile("%au1 2@%", 2); File.Write(TempStr.replace(%au2 2@%, "%au3 2@%")); File.Close(); </SCRIPT> ;
: ReplaceRe ( a1 u1 a2 u2 a3 u3 -- a4 u4 ) \ Поиск и замена в строке. 2ROT FOLDER-WINDOWS S" \TEMP\" S+ TempFile S+ 2DUP 2>R FWRITE 2R@ 2ROT 2ROT ReplaceReFile 2R@ FILE 2R> FDELETE ; %>
#( task_WORDS_nnCron \ Пример работы ReplaceReFile и ReplaceRe NoActive : ListWords S" _nnCron_Words.txt" +ModuleDirName ; Action: \ Сохраняем в файл _nnCron_Words.txt список слов из словаря nnCron'a. SWHide S" cmd.exe /C %QUOTE%%ModuleDirName%nncron.exe WORDS BYE > %ListWords%%QUOTE%" EVAL-SUBST START-APPW ListWords ListWords S" .bak" S+ FCOPY \ Делаем резервную копию файла.
\ Пример работы ReplaceReFile \ Удаляем пробелы и пустые строки. ListWords S" / +(\r\n)*/g" S" \r\n" ReplaceReFile 20 2000 BEEP
\ Пример работы ReplaceRe \ Переставляем буквы и разбиваем на строки. S" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" \ Исходная строка. S" /([A-EQ-Z])([A-EQ-Z])/gi" \ Регулярное выражение (что найти). S" $2\r\n$1\r\n" \ На что заменить. ReplaceRe MsgBox
\ Открываем файлы в блокноте. START-APP: "NOTEPAD.EXE %ModuleDirName%_nnCron_Words.txt.bak" 2000 PAUSE START-APP: "NOTEPAD.EXE %ListWords%" )#
-
dothen
-
- Posts: 187
- Joined: Mon, 16 Mar 2015, 04:58
by Morituruz » Mon, 01 Feb 2016, 10:58
dothen зачем нужен JScript?
-

Morituruz
-
- Posts: 728
- Joined: Sun, 14 Oct 2007, 01:51
by VoidVolker » Mon, 01 Feb 2016, 11:48
После обработки строки регулярным выражением при использовании групп, переменные $1 .. $15 содержат значение соответствующей группы, а $0 - всю строку.
-

VoidVolker
- Site Admin
-
- Posts: 2907
- Joined: Tue, 25 Apr 2006, 17:56
by dothen » Wed, 03 Feb 2016, 02:30
regexp и русский язык - проблема с группировкой паттерна2 Николас: проблемы RegExp-ов и слово --- Code: Select all
#( Speed_RE SingleInstance NoActive 2VARIABLE aure \ http://booksbest.org/books/afanasev-aleksandr-russkie-zavetnye-skazki-sobrannye-a-n-afanasevym.zip \ Надо вставить свой путь к файлу. SCONSTANT TestFile Путькфайлу\afanasev-aleksandr-russkie-zavetnye-skazki-sobrannye-a-n-afanasevym.fb2 : TestFileX TestFile S" .bak" S+ ; Action: TestFile TestFileX FCOPY \ Делаем резервную копию файла. S" " aure 2!
20 2000 BEEP GetTickCount >R \ Старт TestFileX FILE S" / +</" RE-ALL aure 2@ $0 S+ aure 2! \ Складываем найденные фрагменты. ;RE-ALL GetTickCount R> - \ Стоп 20 2000 BEEP S" RE-ALL = " ROT N>S S+ MsgBox aure 2@ MsgBox
20 2000 BEEP GetTickCount >R \ Старт TestFileX S" / +</g" S" <" ReplaceReFile \ Выполняем замену текста в файле. GetTickCount R> - \ Стоп 20 2000 BEEP S" JScript = " ROT N>S S+ MsgBox )#
-
dothen
-
- Posts: 187
- Joined: Mon, 16 Mar 2015, 04:58
Return to nnCron forum (Russian)
Who is online
Users browsing this forum: No registered users and 1 guest
|
|