Bra*_*rad 4 regex delphi pcre regexbuddy
我遇到了RegEx和Delphi 2k9(Win32)的问题.我得到以下错误:$ 7C812AFB的第一次机会异常.消息'TPerlRegEx.Compile()的异常类异常 - 请在RegEx中指定正则表达式'.我从网站上获得了最新版本的TPerlRegEx.使用其defualt设置(使用DLL)
我包括演示源代码.它使用RegExBuddy生成的代码,最新版本.
http://www.4shared.com/file/236428923/97478b61/googleresultstestdata.html
http://www.4shared.com/file/236439483/e0acbe6d/Unit2.htmlDelphi FORM
 http://www.4shared.com/file/236439473/6734a2a2/Unit2.htmlDelphi PAS
谢谢你的帮助
-Brad
数据来自谷歌外部关键字工具RegEx可以使用一些改进...但在RegExBuddy中工作不在Delphi中
unit Unit2;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, PerlRegEx;
type
  TForm2 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
var
 Regex: TPerlRegEx;
 GroupIndex: Integer;
begin
Regex := TPerlRegEx.Create(nil);
Regex.RegEx := 'criteria\.push\(new kpCriterion\('(?P<keyword>(.*?))', (?P<number1>(.*?)),'#13#10'''(?P<localsearch>(.*?))'', ''(?P<globalsearch>(.*?))'', (?P<localsearchnum>(.*?)), (?P<globalsearchnum>(.*?)), (.*+)'#13#10','#13#10''\$(?P<price>(.*?))', (?P<number2>(.*?)),'#13#10''(?P<range>(.*?))', (?P<number3>(.*+))';
Regex.Options := [preMultiLine];
Regex.Subject := memo1.text;
if Regex.Match then begin
  memo2.Lines.Add('Matches Found');
 repeat
  for GroupIndex := 0 to Regex.SubExpressionCount do begin
         memo2.lines.add( Regex.SubExpressions[GroupIndex]); //Add Results to memo
   // backreference text: Regex.SubExpressions[GroupIndex];
   // backreference start: Regex.SubExpressionOffsets[GroupIndex];
   // backreference length: Regex.SubExpressionLengths[GroupIndex];
  end;
 until not Regex.MatchAgain;
end
else
memo2.Lines.Add('No-Matches Found');
end;
end.
DFM
object Form2: TForm2
  Left = 0
  Top = 0
  Caption = 'Form2'
  ClientHeight = 247
  ClientWidth = 480
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Memo1: TMemo
    Left = 8
    Top = 8
    Width = 185
    Height = 89
    Lines.Strings = (
      'var showImpressions = false; var '
      'criteriaSuggestor = '
      ''sensei_keyword'; var '
      'historicalTimePeriod = 'Mar '
      '2009 - Feb 2010'; var '
      'historicalStartMonth = 2; var '
      'impressionTimePeriod = '
      ''February'; var '
      'criteriaGroupsArray = new Array(); '
      'var captchaError = false; var '
      'quotaExceeded = false;'
      'var criteria = new Array();'
      'var monthlyVariation = new '
      'Array();'
      'monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.52'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.67'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.82'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '1.0'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.73'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.5'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.45'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.45'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.43'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.4'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.47'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.45'
      '));'
      'criteria.push(new '
      'kpCriterion('thunderstorm'
      '9;, 1.9117305278778076,'
      #39'201,000'#39', '#39'550,000'#39', 201000, '
      '550000, 0.8666667'
      ','
      ''$0.49', 493102,'
      ''1 - 3', 2'
      ','
      '0'
      ','
      '0'
      ','
      'monthlyVariation,'
      '5'
      ','
      ''''
      ','
      'kpView.MATCH_BROAD'
      ','
      '0'
      ')); var monthlyVariation = new '
      'Array();'
      'monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.57'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '1.0'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.7'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.57'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.45'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.42'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.47'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.46'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.43'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.36'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.45'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.43'
      '));'
      'criteria.push(new '
      'kpCriterion('[thunderstorm]&'
      '#39;, 1.9117305278778076,'
      #39'33,100'#39', '#39'90,500'#39', 33100, 90500, '
      '0.8666667'
      ','
      ''$0.49', 493102,'
      ''1 - 3', 2'
      ','
      '0'
      ','
      '0'
      ','
      'monthlyVariation,'
      '3'
      ','
      ''''
      ','
      'kpView.MATCH_EXACT'
      ','
      '0'
      ')); var monthlyVariation = new '
      'Array();'
      'monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.52'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.67'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.82'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '1.0'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.73'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.5'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.45'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.45'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.43'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.4'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.47'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.45'
      '));'
      'criteria.push(new '
      'kpCriterion('\42thunderstorm\'
      '042', 1.9117305278778076,'
      #39'201,000'#39', '#39'450,000'#39', 201000, '
      '450000, 0.8666667'
      ','
      ''$0.49', 493102,'
      ''1 - 3', 2'
      ','
      '0'
      ','
      '0'
      ','
      'monthlyVariation,'
      '5'
      ','
      ''''
      ','
      'kpView.MATCH_PHRASE'
      ','
      '0'
      ')); var monthlyVariation = new '
      'Array();'
      'monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.75'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.81'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '1.0'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.87'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.64'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.56'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.52'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.6'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.53'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.47'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.58'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.61'
      '));'
      'criteria.push(new '
      'kpCriterion('thunderstorms&#'
      '39;, 1.8268921375274658,'
      #39'110,000'#39', '#39'201,000'#39', 110000, '
      '201000, 0.8'
      ','
      ''$0.56', 559074,'
      ''1 - 3', 2'
      ','
      '0'
      ','
      '0'
      ','
      'monthlyVariation,'
      '4'
      ','
      ''''
      ','
      'kpView.MATCH_BROAD'
      ','
      '0'
      ')); var monthlyVariation = new '
      'Array();'
      'monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.83'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.82'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '1.0'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.67'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.42'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.41'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.47'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.56'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.47'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.39'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.5'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.51'
      '));'
      'criteria.push(new '
      'kpCriterion('[thunderstorms]&'
      '#39;, 1.8268921375274658,'
      #39'22,200'#39', '#39'40,500'#39', 22200, 40500, '
      '0.8'
      ','
      ''$0.56', 559074,'
      ''1 - 3', 2'
      ','
      '0'
      ','
      '0'
      ','
      'monthlyVariation,'
      '4'
      ','
      ''''
      ','
      'kpView.MATCH_EXACT'
      ','
      '0'
      ')); var monthlyVariation = new '
      'Array();'
      'monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.75'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.81'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '1.0'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.87'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.64'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.56'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.52'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.6'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.53'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.47'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.58'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.61'
      '));'
      'criteria.push(new '
      'kpCriterion('\42thunderstorms'
      '\042', 1.8268921375274658,'
      #39'110,000'#39', '#39'165,000'#39', 110000, '
      '165000, 0.8'
      ','
      ''$0.56', 559074,'
      ''1 - 3', 2'
      ','
      '0'
      ','
      '0'
      ','
      'monthlyVariation,'
      '4'
      ','
      ''''
      ','
      'kpView.MATCH_PHRASE'
      ','
      '0'
      ')); var monthlyVariation = new '
      'Array();'
      'monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.71'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.73'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.82'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '1.0'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.87'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.92'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.82'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.7'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.75'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.68'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.77'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.79'
      '));'
      'criteria.push(new '
      'kpCriterion('lightning '
      'storm', 1.774579644203186,'
      #39'49,500'#39', '#39'90,500'#39', 49500, 90500, '
      '0.73333335'
      ','
      ''$0.54', 535666,'
      ''1 - 3', 2'
      ','
      '0'
      ','
      '0'
      ','
      'monthlyVariation,'
      '5'
      ','
      ''''
      ','
      'kpView.MATCH_BROAD'
      ','
      '0'
      ')); var monthlyVariation = new '
      'Array();'
      'monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.76'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.87'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.97'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '1.0'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.87'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '1.0'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.98'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.87'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.84'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.68'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.86'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.81'
      '));'
      'criteria.push(new '
      'kpCriterion('[lightning '
      'storm]', 1.774579644203186,'
      #39'12,100'#39', '#39'22,200'#39', 12100, 22200, '
      '0.73333335'
      ','
      ''$0.54', 535666,'
      ''1 - 3', 2'
      ','
      '0'
      ','
      '0'
      ','
      'monthlyVariation,'
      '5'
      ','
      ''''
      ','
      'kpView.MATCH_EXACT'
      ','
      '0'
      ')); var monthlyVariation = new '
      'Array();'
      'monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.68'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.72'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.81'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '1.0'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.85'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.92'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.81'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.67'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.71'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.65'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.76'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.73'
      '));'
      'criteria.push(new '
      'kpCriterion('\42lightning '
      'storm\042', '
      '1.774579644203186,'
      #39'33,100'#39', '#39'60,500'#39', 33100, 60500, '
      '0.73333335'
      ','
      ''$0.54', 535666,'
      ''1 - 3', 2'
      ','
      '0'
      ','
      '0'
      ','
      'monthlyVariation,'
      '5'
      ','
      ''''
      ','
      'kpView.MATCH_PHRASE'
      ','
      '0'
      ')); var monthlyVariation = new '
      'Array();'
      'monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.69'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.69'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.71'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.66'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.68'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.7'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.75'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.79'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.74'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.72'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '1.0'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.7'
      '));'
      'criteria.push(new '
      'kpCriterion('rain storm', '
      '1.7464053630828857,'
      #39'27,100'#39', '#39'49,500'#39', 27100, 49500, '
      '0.6666667'
      ','
      ''$0.53', 526334,'
      ''1 - 3', 2'
      ','
      '0'
      ','
      '0'
      ','
      'monthlyVariation,'
      '0'
      ','
      ''''
      ','
      'kpView.MATCH_BROAD'
      ','
      '0'
      ')); var monthlyVariation = new '
      'Array();'
      'monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '1.0'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.87'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.79'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.57'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.55'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.57'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.74'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.76'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.69'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.61'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.89'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.73'
      '));'
      'criteria.push(new '
      'kpCriterion('[rain '
      'storm]', '
      '1.7464053630828857,'
      #39'5,400'#39', '#39'8,100'#39', 5400, 8100, '
      '0.6666667'
      ','
      ''$0.53', 526334,'
      ''1 - 3', 2'
      ','
      '0'
      ','
      '0'
      ','
      'monthlyVariation,'
      '2'
      ','
      ''''
      ','
      'kpView.MATCH_EXACT'
      ','
      '0'
      ')); var monthlyVariation = new '
      'Array();'
      'monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.73'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.7'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.68'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.61'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.68'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.69'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.73'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.72'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.62'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.59'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '1.0'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.66'
      '));'
      'criteria.push(new '
      'kpCriterion('\42rain '
      'storm\042', '
      '1.7464053630828857,'
      #39'14,800'#39', '#39'27,100'#39', 14800, 27100, '
      '0.6666667'
      ','
      ''$0.53', 526334,'
      ''1 - 3', 2'
      ','
      '0'
      ','
      '0'
      ','
      'monthlyVariation,'
      '0'
      ','
      ''''
      ','
      'kpView.MATCH_PHRASE'
      ','
      '0'
      ')); var monthlyVariation = new '
      'Array();'
      'monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.82'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.87'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '1.0'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '1.0'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.78'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.82'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.84'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.79'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.77'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.61'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.92'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.82'
      '));'
      'criteria.push(new '
      'kpCriterion('lightning '
      'storms', '
      '1.6842896938323975,'
      #39'14,800'#39', '#39'27,100'#39', 14800, 27100, '
      '0.73333335'
      ','
      ''$0.42', 417108,'
      ''1 - 3', 2'
      ','
      '0'
      ','
      '0'
      ','
      'monthlyVariation,'
      '4'
      ','
      ''''
      ','
      'kpView.MATCH_BROAD'
      ','
      '0'
      ')); var monthlyVariation = new '
      'Array();'
      'monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.9'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.9'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '1.0'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.84'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.7'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.81'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.88'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.77'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.76'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.57'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.75'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.63'
      '));'
      'criteria.push(new '
      'kpCriterion('[lightning '
      'storms]', '
      '1.6842896938323975,'
      #39'3,600'#39', '#39'8,100'#39', 3600, 8100, '
      '0.73333335'
      ','
      ''$0.42', 417108,'
      ''1 - 3', 2'
      ','
      '0'
      ','
      '0'
      ','
      'monthlyVariation,'
      '4'
      ','
      ''''
      ','
      'kpView.MATCH_EXACT'
      ','
      '0'
      ')); var monthlyVariation = new '
      'Array();'
      'monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.8'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.86'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '1.0'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.99'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.77'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.83'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.85'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.78'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.77'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.6'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.91'
      ')); monthlyVariation.push(new '
      'kpMonthlyPopularity('
      '0.81'
      '));'
      'criteria.push(new '
      'kpCriterion('\42lightning '
      'storms\042', '
      '1.6842896938323975,'
      #39'12,100'#39', '#39'22,200'#39', 12100, 22200, '
      '0.73333335'
      ','
      ''$0.42', 417108,'
      ''1 - 3', 2'
      ','
      '0'
      ','
      '0'
      ','
      'monthlyVariation,'
      '4'
      ','
      ''''
      ','
      'kpView.MATCH_PHRASE'
      ','
      '0'
      ')); var monthlyVariation =
运行时错误"TPerlRegEx.Compile() - 请首先在RegEx中指定正则表达式"意味着您调用了TPerlRegEx.Compile或其他调用此方法的方法(例如TPerlRegEx.Match)而未设置TPerlRegEx.RegEx属性.您无法使用问题中的代码获得该错误.
你的文件Unit2.pas无法编译错误"字符串文字最多可包含255个元素".这是RegexBuddy在生成Delphi代码时尚未考虑的问题.(下一个免费的次要更新将会.)如果你手动将字符串拆分成短于255个字符的部分(例如'longstring'变成'long'+'string'),那么代码就会运行.但它没有找到任何匹配.
为了让你的代码找到匹配项,我让它从磁盘加载你的文件googleresultstestdata.txt而不是使用备忘录来确保备忘录的自动换行不会在文本中添加任何换行符.我还从正则表达式中删除了#13的所有实例.您的文件googleresultstestdata.txt使用的UNIX样式换行符仅与\n或#10匹配.\ r \n或#13#10匹配Windows风格的换行符.
在Delphi字符串中,#13表示CR并#10表示LF.在正则表达式中使用文字换行符绝对没有问题.如果你输入一个文字换行符到RegexBuddy,那么RegexBuddy就像#13#10在Delphi中那样编码.如果你输入\r\nRegexBuddy,那么RegexBuddy就像'\r\n'在Delphi中那样编码.PCRE(由TPerlRegEx内部使用)将\ r和\n解释为CR和LF.
您的正则表达式使用冗余捕获组.  (?<name>(.*?))将.*?内部编号为捕获组,并将其放入命名的capturng组"name"中.这样做没有意义.如果您想要命名组,只需使用(?<name>.*?)
这不会影响正则表达式匹配的内容,但会影响其性能.但更大的问题是所有这些.*?都可能导致灾难性的回溯.这是否值得关注取决于您将如何使用正则表达式.如果您只在自己的数据上使用它并且它不会导致问题,您可以保留它.但是,如果这是进入处理用户提供的数据的应用程序,那么如果它不能与用户的数据匹配,那么你需要一个优雅失败的正则表达式.
unit Unit2;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, PerlRegEx;
type
  TForm2 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
var
    Regex: TPerlRegEx;
    GroupIndex: Integer;
  FS: TFileStream;
  S: UTF8String;
begin
  Regex := TPerlRegEx.Create(nil);
  Regex.RegEx := 'criteria\.push\(new kpCriterion\('(?P<keyword>(.*?))', (?P<number1>(.*?)),' +
                 #10'''(?P<localsearch>(.*?))'', ''(?P<globalsearch>(.*?))'', (?P<localsearchnum>(.*?)), (?P<globalsearchnum>(.*?)), (.*+)'#10','#10''\$(?P<price>(.*?))', (?P<number2>(.*?)),'#10''(?P<range>(.*?))', (?P<number3>(.*+))';
  Regex.Options := [preMultiLine];
  FS := TFileStream.Create('g:\temp\googleresultstestdata.txt', fmOpenRead);
  SetLength(S, FS.Size);
  FS.Read(S[1], Length(S));
  FS.Free;
  Regex.Subject := S;
  if Regex.Match then begin
    memo2.Lines.Add('Matches Found');
    repeat
      for GroupIndex := 0 to Regex.SubExpressionCount do begin
           memo2.lines.add( Regex.SubExpressions[GroupIndex]); //Add Results to memo
        // backreference text: Regex.SubExpressions[GroupIndex];
        // backreference start: Regex.SubExpressionOffsets[GroupIndex];
        // backreference length: Regex.SubExpressionLengths[GroupIndex];
      end;
    until not Regex.MatchAgain;
  end
  else
    memo2.Lines.Add('No-Matches Found');
end;
end.