powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Regular Expressions
3 сообщений из 3, страница 1 из 1
Regular Expressions
    #34214561
Anton_Gusev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, не могу найти хорошей поддержки регулярных выражений под винды.
Пытаюсь окучить PCRE.dll (ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/Contrib/pcreming.zip).
Пока плохо получается, помогите с советом как портировать функции с прототипами:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
int regcomp(regex_t *preg, const char *pattern, int cflags); 

int regexec(regex_t *preg, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags); 

size_t regerror(int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size); 

void regfree(regex_t *preg); 

тут preg - указатель на структуру, pmatch[] - массив структур с найденными строками - с ним основная загвоздка - не знаю как его использовать.
пробовал все так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE integer regexec IN "pcre.dll" string @ re, string sstr, integer nmch, string @, integer
DECLARE integer regcomp IN "pcre.dll" string @, string, integer
DECLARE integer regerror IN "pcre.dll" integer errcode, string @ preg, string @ errbuf, integer errbuf_size

structBuff = SPACE( 15 )
structMCHS = SPACE( 100 )
structERR = SPACE( 100 )

nmch= 1 

?regcomp(@structBuff, "\w*",  0 )
?regexec(@structBuff, "sss", nmch, @structMCHS,  1 )

не заю как поиметь результаты.
зы: документация есть в
тут
...
Рейтинг: 0 / 0
Regular Expressions
    #34214578
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю работающий вариант, выдранный из одного проекта:

lcFileName = '\Work\Projects\Offline\XML\rss.xml'
Local loRE
loRE = Createobject("vbscript.regexp")
With loRE
.Global = .T.
.multiline = .T.
sss = Filetostr(lcFileName)
Select bbcode
Scan For Not Empty(Exec) and type !='p'
If Lower(Type)<>'s'
.Pattern = Mline(Exec, 1)
sss = .Replace( sss , Chrtran(Tag1, '%', '$'))
.Pattern = Mline(Exec, 2)
sss = .Replace( sss , Tag2)
Else
.Pattern = Mline(Exec, 1)
sss = .Replace( sss , Chrtran(Tag1, '%', '$')+Param+Tag2)
+Param+Tag2)
Endif
Endscan
Endwith
Strtofile(sss, '\Work\Projects\Offline\XML\111.htm')
...
Рейтинг: 0 / 0
Regular Expressions
    #34215732
Anton_Gusev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, буду пробовать.

Но вообще, интересно каким образом работать с параметрами типа массив-структур при обращении к dll из фоксы.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Regular Expressions
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]