我目前正在使用正则表达式在给定字符串中查找一些数据。我希望找到匹配模式在字符串中的位置。
是否可以使用 FreePascal 在给定字符串中找到正则表达式的偏移量?
我目前正在使用正则表达式在给定字符串中查找一些数据。我希望找到匹配模式在字符串中的位置。
是否可以使用 FreePascal 在给定字符串中找到正则表达式的偏移量?
在当前版本中,有两个正则表达式函数。一种只在较新的版本中,但却是最常用的一种(Sorokin's regexpr)。较旧的单元正则表达式更快但更有限的iirc。
我不怎么使用正则表达式,所以我没有给你的示例语法。虽然在 wiki http://wiki.freepascal.org/Regexpr中有一些信息
当然你也可以尝试为 perl pcre 库创建一个头文件。(或回收德尔福一个)
但是,要找到一个简单的子字符串的偏移量,可以使用标准的 POS() 函数。还有一个替换功能。
这是一个使用标准 RegExpr 单元的示例。
{$APPTYPE CONSOLE}
{$IFDEF FPC}{$MODE DELPHI}{$ENDIF}
uses
regexpr;
var
s: string;
e: TRegExpr;
begin
s := 'abcdefg';
e := TRegExpr.Create;
e.Expression := '[c-f]+';
e.Exec(s);
WriteLn(e.Match[0]); // cdef
WriteLn(e.MatchPos[0]); // 3
WriteLn(e.MatchLen[0]); // 4
e.Free;
ReadLn;
end.