字符串中的正则表达式偏移量

时间:2013-07-07 21:09:43

标签: freepascal lazarus

我目前正在使用正则表达式查找给定字符串中的一些数据。我希望在字符串中找到匹配模式的位置。

是否可以使用FreePascal找到给定字符串中正则表达式的偏移量?

2 个答案:

答案 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.