現在、正規表現を使用して特定の文字列内のデータを検索しています。文字列内の一致するパターンの位置を見つけたいと考えています。
FreePascal を使用して、特定の文字列で正規表現のオフセットを見つけることは可能ですか?
現在、正規表現を使用して特定の文字列内のデータを検索しています。文字列内の一致するパターンの位置を見つけたいと考えています。
FreePascal を使用して、特定の文字列で正規表現のオフセットを見つけることは可能ですか?
現在のバージョンには、2 つの正規表現関数があります。1 つは新しいバージョンにのみ含まれていますが、最も一般的に使用されているもの (Sorokin の正規表現) です。また、古い単位の正規表現は高速ですが、iirc はより制限されています。
私は正規表現をあまり使用しないので、構文の例はありません。ウィキhttp://wiki.freepascal.org/Regexprにはいくつかの情報がありますが
もちろん、perl pcre ライブラリのヘッダーを作成することもできます。(またはDelphiのものをリサイクルします)
ただし、単純な部分文字列からオフセットを見つけるには、標準の 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.