[INTERFACE]
DIALOG, "Поиск по регулярному выражению", 379, 374;
STATIC, "Где ищем", 4, 4, 56, 20;
EDIT, 172, 4, 196, 20, string Text;
CHECK, "Искать между (точное совпадение)", 4, 28, 208, 20, int ZP;
EDIT, 4, 52, 176, 20, string ZONA1;
EDIT, 192, 52, 176, 20, string ZONA2;
STATIC, "Смещение символов от начала", 4, 76, 172, 20;
EDIT, 192, 76, 100, 20, int SM1;
STATIC, "Смещение символов от окончания", 4, 100, 184, 20;
EDIT, 192, 100, 100, 20, int SM2;
STATIC, "Регулярное выражение", 4, 124, 124, 20;
EDIT, 172, 124, 196, 20, string Reg;
STATIC, "Флаги (через | )", 4, 148, 100, 20;
EDIT, 172, 148, 196, 20, int F;
STATIC, "Сколько ищем (или -1)", 4, 172, 116, 20;
EDIT, 172, 172, 100, 20, int Kol;
STATIC, "Количество найденных", 4, 196, 124, 20;
EDIT, 172, 196, 100, 20, int K;
STATIC, "Массив найденнного текста", 4, 220, 148, 20;
EDIT, 172, 220, 100, 20, int MText;
STATIC, "Массив начала фрагментов", 4, 244, 148, 20;
EDIT, 172, 244, 100, 20, int MStart;
STATIC, "Массив окончания фрагментов", 4, 268, 164, 20;
EDIT, 172, 268, 100, 20, int MFinish;
STATIC, "Комментарий", 4, 292, 76, 20;
EDIT, 84, 292, 284, 20, unknown Comment;
BUTTON_OK, "Принять", 164, 320, 100, 20;
BUTTON_CANCEL, "Закрыть", 268, 320, 100, 20;
[END]


[APPEARANCE]
COLOR = 55, 75, 155;
SIZE_X = 12;
SIZE_Y =6;
[END]

[INFO]
[ENDL]>>Reg>>[ENDL]>>Comment
[END]

[ASSOC_VAR]
Text="Текст в котором ищем по регулярному выражению";
ZP=0;
ZONA1="ек";
ZONA2="вы";
SM1=0;
SM2=0;
Reg="(?<=в )(.*?)(?= по)";
F=0;
Kol=1;
K=Kol_Redex;
MText=Rez_Redex;
MStart=Start_Redex;
MFinish=End_Redex;
V_K=#~K~;
V_MText=#~MText~[0];
V_MStart=#~MStart~[0];
V_MFinish=#~MFinish~[0];
Comment=;
[END]

[GLOBAL_VAR]
int ~K~;
string ~MText~[2000];
int ~MStart~[2000];
int ~MFinish~[2000];
[END]


[EVENT]
IF (ZP==0)ENABLE(GETID(ZONA1), 0);
IF (ZP==0)ENABLE(GETID(ZONA2), 0);
IF (ZP==0)ENABLE(GETID(SM1), 0);
IF (ZP==0)ENABLE(GETID(SM2), 0);
IF (ZP==1)ENABLE(GETID(ZONA1), 1);
IF (ZP==1)ENABLE(GETID(ZONA2), 1);
IF (ZP==1)ENABLE(GETID(SM1), 1);
IF (ZP==1)ENABLE(GETID(SM2), 1);
[END]



[FUNCTION_BODY]
function(int k, string #rez, string text, string reg, int flag, int #kol, int #start_reg, int #end_reg, int zp, string zona1, string zona2, int sm1, int sm2)
{
  if (zp) 
  {
  if (sm1!=0 || sm2!=0) text=cuttext(text, zona1, sm1, zona2, sm2);
  else text=cuttext(text, zona1, zona2);
  }
  if (text=="")
  {
  kol=0;
  return 0;
  }
kol=regexsearch(k, #rez[0], text, reg, flag);
if (kol<1) return 0;
regexstart(#start_reg[0]);
regexend(#end_reg[0]);
return kol;
}
[END]

[CALL]
(Kol, V_MText, Text, Reg, F, V_K, V_MStart, V_MFinish, ZP, ZONA1, ZONA2, SM1, SM2)
[END]

[FUNCTION_LOGIC]  
>0
[END]