Задача. Выделить параметры из SQL запроса.
INSERT INTO DB2ADMIN.LHEADER(IDH, KEYW, VERNUMB, REGNUM, REGNAME, DESCR)
VALUES(:IDH, :KEYW, :VERNUMB, :REGNUM, :REGNAME, :DESCR);
само регулярное выражение: \:(\S+)[,)\s]
начиная с символа ":" выделить все непробельные символы "(\S+)" до группы символов [,)\s] запятая, скобка, пробел (добавить по вкусу)
Используя юнит RegExpr.pas
procedure TfmTRegExprClassMain.btnParamsGetClick(Sender: TObject);
var
r : TRegExpr;
v_Expression: string;
v_InputStr, v_OutPut: string;
begin
// извлечь параметры из запроса
v_Expression := edExpression.Text; // '\:(\S+)[,)\s]'
v_InputStr := memSQL.Text;
r := TRegExpr.Create; // создаем объект
try
r.Expression := v_Expression; // правило по которому будем искать
if r.Exec(v_InputStr) then
REPEAT // до тех пор пока не найдем все вхождения
v_OutPut := v_OutPut + r.Match [0] + ';'; // формирует результат
UNTIL not r.ExecNext;
memParams.Text := v_OutPut;
finally
r.Free;
end;
end;
v_Expression - содержит выражения поиска
v_InputStr - строка, в которой ищем
v_OutPut - строка с результатами поиска
На выходе получаем
:IDH ;:KEYW, ;:VERNUMB, ;:REGNUM, ;:REGNAME, ;:DESCR ;
INSERT INTO DB2ADMIN.LHEADER(IDH, KEYW, VERNUMB, REGNUM, REGNAME, DESCR)
VALUES(:IDH, :KEYW, :VERNUMB, :REGNUM, :REGNAME, :DESCR);
само регулярное выражение: \:(\S+)[,)\s]
начиная с символа ":" выделить все непробельные символы "(\S+)" до группы символов [,)\s] запятая, скобка, пробел (добавить по вкусу)
Используя юнит RegExpr.pas
procedure TfmTRegExprClassMain.btnParamsGetClick(Sender: TObject);
var
r : TRegExpr;
v_Expression: string;
v_InputStr, v_OutPut: string;
begin
// извлечь параметры из запроса
v_Expression := edExpression.Text; // '\:(\S+)[,)\s]'
v_InputStr := memSQL.Text;
r := TRegExpr.Create; // создаем объект
try
r.Expression := v_Expression; // правило по которому будем искать
if r.Exec(v_InputStr) then
REPEAT // до тех пор пока не найдем все вхождения
v_OutPut := v_OutPut + r.Match [0] + ';'; // формирует результат
UNTIL not r.ExecNext;
memParams.Text := v_OutPut;
finally
r.Free;
end;
end;
v_Expression - содержит выражения поиска
v_InputStr - строка, в которой ищем
v_OutPut - строка с результатами поиска
На выходе получаем
:IDH ;:KEYW, ;:VERNUMB, ;:REGNUM, ;:REGNAME, ;:DESCR ;