RE-REPLACE

Обсуждение программ nnCron и nnCron LITE

RE-REPLACE

Postby Mitry » Wed, 01 Aug 2007, 08:47

WORDS-LIKE показывает, что есть слово RE-REPLACE - очень похоже, что это замена в строке с помощью regexp-ов. Но ни в хелпе ни в исходниках его описания нет, а оно решило бы половину проблем, которые возникают всвязи с обработкой строк. Нельзя ли прояснить формат вызова RE-REPLACE ?
Mitry
 
Posts: 9
Joined: Thu, 23 Sep 2004, 02:26

Postby VoidVolker » Wed, 01 Aug 2007, 23:17

Какие такие проблемы с обработкой строк?
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Postby 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

Re: RE-REPLACE

Postby 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 подряд
User avatar
AlikasS
 
Posts: 1434
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Postby VoidVolker » Thu, 02 Aug 2007, 11:09

Например, эти "пpодвинутые" сpедства pаботы со стpоками. RegExp's - универсальный, стандартный и простой способ сделать тоже самое и много больше. К тому же, эта фича, кажется, уже реализована, но не документирована :(

"более простой" - регекспом уменшить длину строки на три? Это совершенно разные вещи. "Продвинутые средства ..." - это более низкий уровень, регекспы - более высокий, и в их основе есть "Продвинутые средства ..." , а значит они более сложные, более медленные. Если тебе нужен конкретный инструмент для решения конкретной задачи - напиши его, ты ничем не ограничен. Не знаешь как - спроси.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: RE-REPLACE

Postby 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

Postby VoidVolker » Thu, 02 Aug 2007, 23:25

~nn\lib\re.f
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: RE-REPLACE

Postby AlikasS » Fri, 03 Aug 2007, 01:31

Mitry wrote:А где такие исходники берут? В http://www.nncron.ru/download/src.rar даже такого нет.
http://www.nncron.ru/download_ru.shtml
а конкретно
nnsrc.zip и
nnlib.zip
User avatar
AlikasS
 
Posts: 1434
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Postby VoidVolker » Fri, 03 Aug 2007, 10:21

Я могу его написать - но т.к. с регекспами почти не работаю, нужен хотя бы образец, того как он должен работать - а точнее пример, а лучше несколько, может там есть какие-ть подводные булыжники, ведь не просто так авторы его оставили пустым, хотя может просто и не успели. Вообщем жду примеров того, как он должн работать.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Postby Mitry » Fri, 03 Aug 2007, 12:08

VoidVolker wrote:ведь не просто так авторы его оставили пустым, хотя может просто и не успели. Вообщем жду примеров того, как он должн работать.


Подозреваю, что re_replace просто нет в библиотеке от Colorer'а, которая использовалась для регекспов. Хотя есть полностью функциональные, небольшие и свободные библиотеки (Кстати, у них есть документация с примерами использования):



Кде-то здесь в форуме проскакивало, что, возможно, Николас изменит поддержку регекспов. Без этого переписывать все это на forth - тот ещё геморой.
Mitry
 
Posts: 9
Joined: Thu, 23 Sep 2004, 02:26

Postby 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

Тут еще проще - качаем длл, доку, и вызваем нужные функции из длл.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: RE-REPLACE

Postby 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: 184
Joined: Mon, 16 Mar 2015, 04:58

Re: RE-REPLACE

Postby Morituruz » Mon, 01 Feb 2016, 10:58

dothen
зачем нужен JScript?
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: RE-REPLACE

Postby VoidVolker » Mon, 01 Feb 2016, 11:48

После обработки строки регулярным выражением при использовании групп, переменные $1 .. $15 содержат значение соответствующей группы, а $0 - всю строку.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: RE-REPLACE

Postby 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: 184
Joined: Mon, 16 Mar 2015, 04:58


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: Yahoo [Bot] and 1 guest

cron