文件中使用perlregex的Delphi出错

时间:2013-07-14 19:05:12

标签: delphi

我有perlregex的问题,问题不在于这个用途是否在组件perlregex txt文件中,但我想打开文件中有不理解的字符,我知道我有多难用它来搜索perl perlregex,上传了一个指向文件的链接:http://uploaded.net/file/ghhm0xv4,我确定问题出在文本文件中,因为我很好地使用组件perlregex,如果他们想查看有关如何使用perlregex组件的代码你可以在这里看到。

unit test;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, PerlRegEx;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    PerlRegEx1: TPerlRegEx;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function ReverseString(const S: string): string;
var
  i, len: Integer;
begin
  len := Length(S);
  SetLength(Result, len);
  for i := len downto 1 do
  begin
    Result[len - i + 1] := S[i];
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  conte: TMemoryStream;
  source: string;

begin

  conte := TMemoryStream.Create;
  conte.LoadFromFile('test.txt');
  SetString(source, PAnsiChar(conte.Memory), conte.Size);

  source := ReverseString(source);

  PerlRegEx1.Regex := '} 2 E R E H { (.*) } 2 E R E H {';
  PerlRegEx1.Subject := source;

  if PerlRegEx1.Match then
  begin
    Edit1.Text := PerlRegEx1.SubExpressions[1];
  end;

  end;

end.

问题是它没有找到任何东西,程序一般不会抛出任何错误,我怀疑问题出在文本文件中,如果我不得不对文件内容做些什么来使用perlregex

1 个答案:

答案 0 :(得分:1)

这是一个完美匹配您的RegEx的工作示例(带有测试文本)。如果它对您的文本文件不起作用,则需要检查文本文件的实际内容(例如,使用十六进制编辑器)以查看它实际包含的内容。

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils, PerlRegex;

var
  RegEx: TPerlRegex;
  i: Integer;

begin
  RegEx := TPerlRegEx.Create;

  try
    { TODO -oUser -cConsole Main : Insert code here }
    RegEx.Subject := 'some test text before } 2 E R E H { This is found text } 2 E R E Htext after';
    RegEx.RegEx := '} 2 E R E H { (.*) } 2 E R E H';
    if RegEx.Match then
      WriteLn(RegEx.Groups[1])
    else
      WriteLn('No match found');
    ReadLn;
  finally
    RegEx.Free;
  end;
end.

以下是运行测试应用程序的输出:

Samle regex match from test app