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 Автор  
FAQ (×åñòî çàäàâàíè âúïðîñè)

Q = âúïðîñ
A = îòãîâîð

Q.
Êàê ìîãà äà èçïîëçâàì TRegExpr â Borland C++ Builder?
Èìàì ïðîáëåì, ïîíåæå íÿìà õåäúð-ôàéëîâå (.h èëè .hpp).
A.
·      Äîáàâåòå RegExpr.pas â ïðîåêò bcb
·      Êîìïèëèðàéòå ïðîåêòà. Òîâà ùå ãåíåðèðà ôàéëà RegExpr.hpp
·      Âå÷å ìîæå äà ñå ïèøå êîä, êîéòî èçïîëçâà unit-à RegExpr
·      Íå çàáðàâÿéòå äà äîáàâèòå #include "RegExpr.hpp" êúäåòî å íåîáõîäèìî

Q.
Çàùî TRegExpr âðúùà ïîâå÷å îò åäèí ðåä?
Íàïðèìåð RE <font .*> âðúùà ïúðâèÿ <font, è ñëåä òîâà
îñòàíàëàòà ÷àñò îò ôàéëà, âêë. ïîñëåäíèÿ </html>...
A.
Çà ñúâìåñòèìîñò ñ ïî-ñòàðè âåðñèè ìîäèôèêàòîðúò /s å âêëþ÷åí ïî ïîäðàçáèðàíå.
Èçêëþ÷åòå ãî (íàïðèìåð ÷ðåç ModifierS := false èëè çà âñè÷êè ÍÎÂÈ îáåêòè RegExprModifierS := false) è '.' ùå ñúâïàäà ñ âñè÷êî îñâåí \n
òàêà, êàêòî èñêàòå.
BTW ïðåïîðú÷âàì '<font ([^\n>]*)>', òîãàâà â Match[1] ùå áúäå URL.

Q.
Çàùî TRegExpr âðúùà ïîâå÷å, îòêîëêîòî î÷àêâàì?
Íàïðèìåð, øàáëîíúò '<p>(.+)</p>' , ïðèëîæåí êúì ñòðèíã '<p>a</p><p>b</p>' âðúùà 'a</p><p>b' , à íå 'a', êàêòî î÷àêâàì.
A.
Ïî ïîäðàçáèðàíå âñè÷êè îïåðàòîðè ðàáîòÿò â 'æàäåí' ðåæèì, ò.å. äàâàò êîëêîòî å âúçìîæíî ïî-ãîëÿìî ñúâïàäåíèå.
Àêî èñêàòå äà ðàáîòÿò â 'íåæàäåí' ðåæèì, ìîæåòå èëè äà èçïîëçâàòå 'íåæàäíè' îïåðàòîðè êàòî '+?' è äð. (íîâî âúâ âåðñèÿ v. 0.940), èëè äà ïðåâêëþ÷èòå âñè÷êè îïåðàòîðè â 'íåæàäåí' ðåæèì ñ ïîìîùòà íà ìîäîôîêàòîðà 'g' (èçïîëçâàéòå ñúîòâåòíèòå ñâîéñòâà íà TRegExpr èëè êîíñòðóêöèè îò òèïà '?(-g)' íàïðàâî â RE).

Q.
Êàê äà ïðàâÿ parse íà ñîðñîâå êàòî HTML ñ ïîìîùòà íà TregExpr?
A.
Ñúæàëÿâàì, òîâà å ïî÷òè íåâúçìîæíî!
Ðàçáèðà ñå, ìîæå äà èçïîëçâàòå TRegExpr çà ëåñíî èçâëè÷àíå íà èíôîðìàöèÿ îò HTML, êàêòî ñúì ïîêàçàë â ïðèìåðà ñè, íî àêî èñêàòå èñòèíñêè parsing ùå òðÿáâà äà èçïîëçâàòå èñòèíñëè parser, íå RE!
Ìîæå äà ïðî÷åòåòå ïîäðîáíîòî îáÿñíåíèå â êíèãàòà íà Tom Christiansen è Nathan Torkington 'Perl Cookbook' íàïðèìåð. Íàêðàòêî
èìà ìíîãî êîíñòðóêöèè, íà êîèòî ìîæå ëåñíî äà ñå ïðàâè parse îò èñòèíñêè parser, íî íå è îò RE, è èñòèíñêèÿò parser ÌÍÎà ÏÎ-ÁÚÐÇÎ ïðàâè parsing-à, çàùîòî RE íå ñêàíèðàò ïðîñòî âõîäíèÿ ïîòîê, òîé ïðàâè è îïòèìèçèðàùè òúðñåíèÿ, êîåòî îòíåìà äîñòà ïîâå÷å âðåìå.

Q.
Èìà ëè íà÷èí çà ïîëó÷àâàíå íà ìíîãîêðàòíè ñúâïàäåíèÿ íà øàáëîí â TRegExpr?
A.
Ìîæå äà íàïðàâèòå öèêúë è äà ïðàâèòå ïîñòúïêîâè ñúâïàäåíèÿ ñ ìåòîäà ExecNext.
Òîâà íå ìîæå äà ñòàíå ëåñíî, ïîíåæå Delphi íå å èíòåðïðåòàòîð, êàêúâòî å Perl (è â òîâà å ïðåäèìñòâîòî ìó
èíòåðïðåòàòîðèòå ðàáîòÿò ìíîãî áàâíî!).
Àêî èìàòå íóæäà îò ïðèìåð, ðàçãëåäàéòå ðåàëèçàèÿòà íà ìåòîäà TRegExpr.Replace èëè ïîãëåäíåòå ïðèìåðèòå â
HyperLinksDecorator.pas

Q.
Àç ïðîâåðÿâàì ïîòðåáèòåëñêèÿ âõîä. Çàùî TRegExpr âðúùà 'True' ïðè ãðåøíî âúâåäåí òåêñò îò ïîòðåáèòåëÿ?
A.
 ìíîãî îò ñëó÷àèòå ïîòðåáèòåëèòå íà TRegExpr çàáðàâÿò, ÷å RE å çà ÒÚÐÑÅÍÅ âúâ âõîäíèÿ ñòðèíã. Òàêà, ÷å àêî èñêàòå äà íàêàðàòå ïîòðåáèòåëÿ äà âúâåæäà ñàìî 4 öèôðè è çà òîâà èçïîëçâàòå øàáëîíà '\d{4,4}', ìîæå äà ïðîïóñíåòå ãðåøíè âúâåæäàíèÿ îò òèïà '12345' èëè 'áóêâè 1234 è äðóãè áóêâè'. Òðÿáâà äà äîáàâèòå ïðîâåðêè çà íà÷àëî è êðàé íà ðåäà, çà äà ñòå ñèãóðíè, ÷å íÿìà íèùî íàîêîëî: '^\d{4,4}$'.

Q.
Çàùî íåæàäíèòå èòåðàòîðè ïîíÿêîãà èçãëåæäà, ÷å ðàáîòÿò â æàäåí ðåæèì?
Íàïðèìåð, RE 'a+?,b+?' , ïðèëîæåíà êúì ñòðèíãà 'aaa,bbb' , âðúùà 'aaa,b', à íå áè ëè òðÿáâàëî äà âðúùà 'a,b' çàðàäè íåæàäíèÿ ïúðâè èòåðàòîð?
A.
Òîâà å îãðàíè÷åíèå íà èçïîëçâàíàòà â TRegExpr (è â Perl è â ìíîãî RE ïîä Unix) ìàòåìàòèêà
RE ïðàâè ñàìî 'ïðîñòà' îïòèìèçàöèÿ ïðè òúðñåíå, è íå ñå îïèòâà äà ïðàâè íàé-äîáðàòà îïòèìèçàöèÿ.  íÿêîè ñëó÷àè òîâà å ëîøî, íî êàòî öÿëî å ïî-ñêîðî ïðåäèìñòâî, îòêîëêîòî îãðàíè÷åíèå çàðàäè ïðîèçâîäèòåëíîñòòà è ïðåäâèäèìîñòòà íà ðåçóëòàòèòå.
Îñíîâíîòî ïðàâèëî å
RE íàé-íàïðåä ñå îïèòâà äà íàïðàâè ñúâïàäåíèå îò òåêóùàòà ïîçèöèÿ è ñàìî àêî å íàïúëíî íåâúçìîæíî, ñå ïðåìåñòâà íàïðåä ñ åäèí ñèìâîë è îòíîâî îïèòâà îò íîâàòà ïîçèöèÿ. Òàêà, ÷å àêî èçïîëçâàòå 'a,b+?' , ñå îòêðèâà 'a,b', íî â ñëó÷àé íà 'a+?,b+?' , íå å çàäúëæèòåëíî (çàðàäè íåæàäíîñòòà), íî å âúçìîæíî äà ñå äàäå ñúâïàäåíèå çà ïîâå÷å îò åäíî 'a', òàêà, ÷å TRegExpr ãî ïðàâè è íàêðàÿ âðúùà êîðåêòíèÿ (íî íå îïòèìàëåí) ðåçóëòàò. TregExpr, êàêòî è RE íà Perl èëè Unix íå ñå îïèòâàò äà ñå ïðèäâèæâàò íàïðåä è äà ïðîâåðÿâàò äàëè ùå èìà 'ïî-äîáðî' ñúâïàäåíèå. Íåùî ïîâå÷å, òå èçîáùî íå ìîãàò äà îïðåäåëÿò êîå ñúâïàäåíèå å ïî-äîáðî è êîå ïî-ëîøî.
Ìïëÿ, ïðî÷åòåòå ñåêöèÿòà '
Syntax' çà ïîâå÷å îáÿñíåíèÿ.



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

Help&Manual - the best help authoring tool!