Bulgarian
EnglishFrench German Russian Spanish |
| Предназначение | Инсталиране | Синтаксис | Интерфейс | ЧЕВО | Демо | Автор |
|
Ïðèìåðè çà èçïîëçâàíå
Ïðîñòè ïðèìåðè Àêî íå ñòå çàïîçíàòè ñ Regular Expressions, ìîæåòå äà ïðî÷åòåòå ìîåòî îïèñàíèåòî íà òåõíèÿ ñèíòàêñèñ. Èçïîëçâàíå íà ãëîáàëíèòå ïðîöåäóðè Òîâà å íàé-ïðîñòèÿò, íî íå íàé-ãúâêàâèÿò è åôåêòèâåí íà÷èí:
Èçïîëçâàíå íà îáåêòè îò êëàñ 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. |
![]() |