2013-07-07 31 views
1

我目前使用正則表達式來查找給定字符串中的某些數據。我希望找到字符串中匹配模式的位置。字符串中的正則表達式偏移量

是否有可能找到給定字符串中的正則表達式與FreePascal的偏移量?

回答

2

在當前版本中有兩個正則表達式函數。其中一個只有更新的版本,但是最常用的一個(Sorokin的正則表達式)。更老的單位正則表達式更快但更有限的iirc。

我不使用正則表達式,所以我沒有示例語法。這裏有一些信息在維基http://wiki.freepascal.org/Regexpr雖然

當然,你也可以嘗試創建用於Perl PCRE庫的標題。 (或回收一個德爾福的一個)

但是要找到偏移量一個簡單的子字符串,可以使用標準的POS()函數。這也是一種替代功能。

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.