gpt4 book ai didi

regex - Delphi - TPerlRegEx/RegExBuddy 问题

转载 作者:行者123 更新时间:2023-12-03 15:20:39 24 4
gpt4 key购买 nike

我在 RegEx 和 Delphi 2k9 (Win32) 方面遇到问题。我收到以下错误:第一次机会异常(exception),价格为 $7C812AFB。异常类异常,消息为“TPerlRegEx.Compile() - 请首先在 RegEx 中指定正则表达式”。我从网站上获得了最新版本的 TPerlRegEx。使用其默认设置(使用 DLL)

我包括演示源代码。它使用 RegExBuddy 最新版本生成的代码。

http://www.4shared.com/file/236428923/97478b61/googleresultstestdata.htmlhttp://www.4shared.com/file/236439483/e0acbe6d/Unit2.html德尔福表格http://www.4shared.com/file/236439473/6734a2a2/Unit2.html德尔福PAS

感谢您的帮助

-布拉德

数据来自 Google 外部关键字工具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\(&#39;(?P<keyword>(.*?))&#39;, (?P<number1>(.*?)),'#13#10'''(?P<localsearch>(.*?))'', ''(?P<globalsearch>(.*?))'', (?P<localsearchnum>(.*?)), (?P<globalsearchnum>(.*?)), (.*+)'#13#10','#13#10'&#39;\$(?P<price>(.*?))&#39;, (?P<number2>(.*?)),'#13#10'&#39;(?P<range>(.*?))&#39;, (?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.

可制造性管理

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 = '
'&#39;sensei_keyword&#39;; var '
'historicalTimePeriod = &#39;Mar '
'2009 - Feb 2010&#39;; var '
'historicalStartMonth = 2; var '
'impressionTimePeriod = '
'&#39;February&#39;; 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(&#39;thunderstorm&#3'
'9;, 1.9117305278778076,'
#39'201,000'#39', '#39'550,000'#39', 201000, '
'550000, 0.8666667'
','
'&#39;$0.49&#39;, 493102,'
'&#39;1 - 3&#39;, 2'
','
'0'
','
'0'
','
'monthlyVariation,'
'5'
','
'&#39;&#39;'
','
'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(&#39;[thunderstorm]&'
'#39;, 1.9117305278778076,'
#39'33,100'#39', '#39'90,500'#39', 33100, 90500, '
'0.8666667'
','
'&#39;$0.49&#39;, 493102,'
'&#39;1 - 3&#39;, 2'
','
'0'
','
'0'
','
'monthlyVariation,'
'3'
','
'&#39;&#39;'
','
'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(&#39;\42thunderstorm\'
'042&#39;, 1.9117305278778076,'
#39'201,000'#39', '#39'450,000'#39', 201000, '
'450000, 0.8666667'
','
'&#39;$0.49&#39;, 493102,'
'&#39;1 - 3&#39;, 2'
','
'0'
','
'0'
','
'monthlyVariation,'
'5'
','
'&#39;&#39;'
','
'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(&#39;thunderstorms&#'
'39;, 1.8268921375274658,'
#39'110,000'#39', '#39'201,000'#39', 110000, '
'201000, 0.8'
','
'&#39;$0.56&#39;, 559074,'
'&#39;1 - 3&#39;, 2'
','
'0'
','
'0'
','
'monthlyVariation,'
'4'
','
'&#39;&#39;'
','
'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(&#39;[thunderstorms]&'
'#39;, 1.8268921375274658,'
#39'22,200'#39', '#39'40,500'#39', 22200, 40500, '
'0.8'
','
'&#39;$0.56&#39;, 559074,'
'&#39;1 - 3&#39;, 2'
','
'0'
','
'0'
','
'monthlyVariation,'
'4'
','
'&#39;&#39;'
','
'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(&#39;\42thunderstorms'
'\042&#39;, 1.8268921375274658,'
#39'110,000'#39', '#39'165,000'#39', 110000, '
'165000, 0.8'
','
'&#39;$0.56&#39;, 559074,'
'&#39;1 - 3&#39;, 2'
','
'0'
','
'0'
','
'monthlyVariation,'
'4'
','
'&#39;&#39;'
','
'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(&#39;lightning '
'storm&#39;, 1.774579644203186,'
#39'49,500'#39', '#39'90,500'#39', 49500, 90500, '
'0.73333335'
','
'&#39;$0.54&#39;, 535666,'
'&#39;1 - 3&#39;, 2'
','
'0'
','
'0'
','
'monthlyVariation,'
'5'
','
'&#39;&#39;'
','
'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(&#39;[lightning '
'storm]&#39;, 1.774579644203186,'
#39'12,100'#39', '#39'22,200'#39', 12100, 22200, '
'0.73333335'
','
'&#39;$0.54&#39;, 535666,'
'&#39;1 - 3&#39;, 2'
','
'0'
','
'0'
','
'monthlyVariation,'
'5'
','
'&#39;&#39;'
','
'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(&#39;\42lightning '
'storm\042&#39;, '
'1.774579644203186,'
#39'33,100'#39', '#39'60,500'#39', 33100, 60500, '
'0.73333335'
','
'&#39;$0.54&#39;, 535666,'
'&#39;1 - 3&#39;, 2'
','
'0'
','
'0'
','
'monthlyVariation,'
'5'
','
'&#39;&#39;'
','
'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(&#39;rain storm&#39;, '
'1.7464053630828857,'
#39'27,100'#39', '#39'49,500'#39', 27100, 49500, '
'0.6666667'
','
'&#39;$0.53&#39;, 526334,'
'&#39;1 - 3&#39;, 2'
','
'0'
','
'0'
','
'monthlyVariation,'
'0'
','
'&#39;&#39;'
','
'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(&#39;[rain '
'storm]&#39;, '
'1.7464053630828857,'
#39'5,400'#39', '#39'8,100'#39', 5400, 8100, '
'0.6666667'
','
'&#39;$0.53&#39;, 526334,'
'&#39;1 - 3&#39;, 2'
','
'0'
','
'0'
','
'monthlyVariation,'
'2'
','
'&#39;&#39;'
','
'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(&#39;\42rain '
'storm\042&#39;, '
'1.7464053630828857,'
#39'14,800'#39', '#39'27,100'#39', 14800, 27100, '
'0.6666667'
','
'&#39;$0.53&#39;, 526334,'
'&#39;1 - 3&#39;, 2'
','
'0'
','
'0'
','
'monthlyVariation,'
'0'
','
'&#39;&#39;'
','
'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(&#39;lightning '
'storms&#39;, '
'1.6842896938323975,'
#39'14,800'#39', '#39'27,100'#39', 14800, 27100, '
'0.73333335'
','
'&#39;$0.42&#39;, 417108,'
'&#39;1 - 3&#39;, 2'
','
'0'
','
'0'
','
'monthlyVariation,'
'4'
','
'&#39;&#39;'
','
'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(&#39;[lightning '
'storms]&#39;, '
'1.6842896938323975,'
#39'3,600'#39', '#39'8,100'#39', 3600, 8100, '
'0.73333335'
','
'&#39;$0.42&#39;, 417108,'
'&#39;1 - 3&#39;, 2'
','
'0'
','
'0'
','
'monthlyVariation,'
'4'
','
'&#39;&#39;'
','
'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(&#39;\42lightning '
'storms\042&#39;, '
'1.6842896938323975,'
#39'12,100'#39', '#39'22,200'#39', 12100, 22200, '
'0.73333335'
','
'&#39;$0.42&#39;, 417108,'
'&#39;1 - 3&#39;, 2'
','
'0'
','
'0'
','
'monthlyVariation,'
'4'
','
'&#39;&#39;'
','
'kpView.MATCH_PHRASE'
','
'0'
')); var monthlyVariation =

最佳答案

运行时错误“TPerlRegEx.Compile() - 请先在 RegEx 中指定正则表达式”意味着您在未设置 TPerlRegEx.RegEx 属性的情况下调用了 TPerlRegEx.Compile 或调用此方法的其他方法(例如 TPerlRegEx.Match)。您问题中的代码不会出现该错误。

您的文件 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在德尔福。如果您输入\r\n进入 RegexBuddy 然后 RegexBuddy 编码为 '\r\n'在德尔福。 PCRE(由 TPerlRegEx 内部使用)将\r 和\n 解释为 CR 和 LF。

您的正则表达式使用冗余捕获组。 (?<name>(.*?)).*?在编号捕获组内和命名捕获组“name”内。这样做没有意义。如果您想要指定的组,只需使用 (?<name>.*?)

这不会影响您的正则表达式匹配的内容,但会影响其性能。但更大的问题是所有这些 .*?可能会导致catastrophic backtracking 。这是否是一个问题取决于您将如何使用正则表达式。如果您仅在自己的数据上使用它并且不会造成问题,则可以保留它。但是,如果这要进入处理用户提供的数据的应用程序,那么您将需要一个正则表达式,如果它无法匹配用户的数据,它会更优雅地失败。

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\(&#39;(?P<keyword>(.*?))&#39;, (?P<number1>(.*?)),' +
#10'''(?P<localsearch>(.*?))'', ''(?P<globalsearch>(.*?))'', (?P<localsearchnum>(.*?)), (?P<globalsearchnum>(.*?)), (.*+)'#10','#10'&#39;\$(?P<price>(.*?))&#39;, (?P<number2>(.*?)),'#10'&#39;(?P<range>(.*?))&#39;, (?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.

关于regex - Delphi - TPerlRegEx/RegExBuddy 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2398530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com