我目前正在使用正则表达式查找给定字符串中的一些数据。我希望在字符串中找到匹配模式的位置。
是否可以使用FreePascal找到给定字符串中正则表达式的偏移量?
答案 0 :(得分:2)
在当前版本中,有两个正则表达式函数。一种是仅在较新的版本中,但是最常用的一种(Sorokin的regexpr)。较旧的单位正则表达式更快但更有限iirc。
我不太使用正则表达式,所以我没有示例语法。 wiki http://wiki.freepascal.org/Regexpr中有一些信息,但
当然你也可以尝试为perl pcre库创建一个标题。 (或回收Delphi)
然而,为了找到一个简单的子串,我们可以使用标准的POS()函数。这也是替代功能。
答案 1 :(得分:1)
以下是使用标准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.