RegExp Studio
TRegExpr v.0.942 - Delphi Regular Expressions

Bulgarian
English
French
German
Russian
Spanish
About TRegExpr Предназначение Installation Инсталиране Regular Expressions Syntax Синтаксис TRegExpr Interface Интерфейс FAQ ЧЕВО TRegExpr usage demos Демо Author Автор  
Ïðèìåðè çà èçïîëçâàíå

Ïðîñòè ïðèìåðè


Àêî íå ñòå çàïîçíàòè ñ Regular Expressions, ìîæåòå äà ïðî÷åòåòå ìîåòî îïèñàíèåòî íà òåõíèÿ
ñèíòàêñèñ.

Èçïîëçâàíå íà ãëîáàëíèòå ïðîöåäóðè
Òîâà å íàé-ïðîñòèÿò, íî íå íàé-ãúâêàâèÿò è åôåêòèâåí íà÷èí:

ExecRegExpr ('\d{3}-(\d{2}-\d{2}|\d{4})', 'Phone: 555-1234');  
âðúùà True
ExecRegExpr ('^\d{3}-(\d{2}-\d{2}|\d{4})', 'Phone: 555-1234');  
âðúùà False, çàùîòî èìà ñèìâîëè ïðåäè ñàìèÿ òåëåôîíåí íîìåð, à íèå èçïîëçâàìå ìåòàñèìâîëà '^' (BeginningOfLine)
ReplaceRegExpr ('product', 'Take a look at product. product is the best !', 'TRegExpr');  
âðúùà 'Take a look at TRegExpr. TRegExpr is the best !' ;)

Èçïîëçâàíå íà îáåêòè îò êëàñ TRegExpr
Òîâà äàâà â ðúöåòå âè ìîùíîñòòà íà öÿëàòà áèáëèîòåêà.

// Òàçè ïðîñòà ôóíêöèÿ èçâëè÷à âñè÷êè e-mail àäðåñè îò âõîäíèÿ ñòðèíã
// è âðúùà òåõíèÿò ñïèñúê â ðåçóëòàíòíèÿ ñòðèíã
function ExtractEmails (const AInputString : string) : string;
const
      EmailRE = '[_a-zA-Z\d\-\.]+@[_a-zA-Z\d\-]+(\.[_a-zA-Z\d\-]+)+'
var
      r : TRegExpr;
begin
      Result := ";
      r := TRegExpr.Create;
// Ñúçäàâàìå îáåêòà

      try
// ãàðàíòèðà îñâîáîæäàâàíåòî íà ïàìåòòà
            r.Expression := EmailRE;
            // ïðè òîâà ïðèñâîÿâàíå RE ñå êîìïèëèðà àâòîìàòè÷íî
            // àêî èìà ãðåøêà, âúçíèêâà Exception
            if r.Exec (AInputString) then
                  REPEAT
                        Result := Result + r.Match [0] + ', ';
                  UNTIL not r.ExecNext;
            finally r.Free;
      end;
end;
begin
      ExctractEmails ('My e-mails is anso@mail.ru and anso@usa.net');
      // âðúùà 'anso@mail.ru, anso@usa.net, '
end.
// Çàáåëåæêà: êîìïèëèðàíåòî íà RE ïðè ïðèñâîÿâàíåòî é
// îòíåìà âðåìå. Çàòîâà àêî èçïîëçâàòå òàçè ôóíêöèÿ ìíîãîêðàòíî,
// ùå ñå ïîëó÷è çíà÷èòåëíî çàáàâÿíå.
// Çíà÷èòåëíî îïòèìèçèðàíå ñå ïîñòèãà àêî ïî-ðàíî ñúçäàäåòå
// TRegExpr è îùå ïðè èíèöèàëèçèðàíåòî êîìïèëèðàòå RE.


// Òîçè ïðîñò ïðèìåð èçâëè÷à òåëåôîíåí íîìåð îò âõîäÿùèÿ ñòðèíã
// è ãî ðàçäåëÿ íà ñúñòàâíè ÷àñòè (êîä íà ñòðàíàòà, íà ãðàäà è âúòðåøåí íîìåð).
// Ñëåä òîâà òåçè ÷àñòè ñå ïîñòàâÿò â øàáëîí.
function ParsePhone (const AInputString, ATemplate : string) : string;
const
      IntPhoneRE = '(\+\d *)?(\(\d+\) *)?\d+(-\d*)*';
var
      r : TRegExpr;
begin
      r := TRegExpr.Create;
// Ñúçäàâàìå îáåêòà
      try
// ãàðàíòèðà îñâîáîæäàâàíå íà ïàìåòòà
            r.Expression := IntPhoneRE;
            // Ïðèñâîÿâà ñîðñ-êîäà íà RE. Òîé ùå áúäå êîìïèëèðàí ïðè íåîáõîäèìîñò
            // (íàïðèìåð àêî ñå èçâèêà Exec). Àêî â RE èìà ãðåøêè,
            // ùå âúçíèêíå run-time exception ïðè êîìïèëàöèÿòà ìó
            if r.Exec (AInputString)
                  then Result := r.Substitute (ATemplate)
                  else Result := ";
            finally r.Free;
      end;
end;
begin
      ParsePhone ('Phone of AlkorSoft (project PayCash) is +7(812) 329-44-69',
      'Zone code $1, city code $2. Whole phone number is $&.');
      // âðúùà 'Zone code +7, city code (812) . Whole phone number is +7(812) 329-44-69.'
end.



Ïî-ñëîæíè ïðèìåðè

Ìîæå äà íàìåðèòå ïî-ñëîæíè ïðèìåðè íà èçïîëçâàíå íà TRegExpr â ïðîåêòà
TestRExp.dpr è HyperLinkDecorator.pas.
Âèæòå è ñòàòèÿòà ìè â
Delphi3000.com (íà àíãëèéñêè åçèê) è Delphi Kingdom (íà ðóñêè åçèê).

Äåòàéëíî îïèñàíèå

Âèæòå
ïúëíîòî îïèñàíèå íà èíòåðôåéñà íà TRegExpr.



© 2004 Andrey V. Sorokin, Saint Petersburg, Russia
anso@mail.ru
RegExpStudio.com

Help&Manual - the best help authoring tool!