Регулярные выражения
Добавлено: 20 авг 2008, 12:27
				
				Случаем, нет ли какой библиотеки, которая реализует механизм регулярных выражений в Атлантисе? Может фича уже реализована?
			Обсуждение различных вопросов, связанных с сопровождением, администрированием и программированием
https://gw.tyumbit.ru/
Код: Выделить всё
Function VIPRegExpr(ARegExpr : String,  AInputStr : String) : Boolean; external 'WordLib.dll';Код: Выделить всё
Function IsMatch(s: String, p: String) : Boolean; external 'RegExp.dll#IsMatch'; 
Function Match(s: String, p: String, d: Char) : String; external 'RegExp.dll#Match'; 
Function Replace(s: String, p: String, rs:String) : String; external 'RegExp.dll#Replace'; 
Код: Выделить всё
library GalRegEX;
uses
  System.SysUtils,
  System.RegularExpressions;
{$R *.res}
//Функция проверяет соответствие полученной строки s на соответствие RE p
function IsMatch(s, p : ShortString): boolean; export;
begin
  result := false;
  if (s = '') or (p = '') then exit;
  result := TRegEx.IsMatch(s,p);
end;
//Функция возвращает из строки s все совпадения с RE p разделенных разделителем d
function Match(s, p : ShortString; d : Char): ShortString; export;
begin
  result := '';
  if (s = '') or (p = '') then exit;
  var CurMatch : TMatch;
  for CurMatch in TRegEx.Matches(s, p) do
  begin
    result := result + d + CurMatch.Value;
  end;
  if result <> '' then
    System.Delete(result,1,1);
end;
//Функция возвращает строку s, где все совпадения с RE p заменены на rs
function Replace(s, p, rs : ShortString): ShortString; export;
begin
  result := '';
  if (s = '') or (p = '') then exit;
  result := TRegEx.Replace(s,p,rs);
end;
exports
  IsMatch name 'IsMatch'
, Match   name 'Match'
, Replace name 'Replace';
begin
end.Пожалуйста.