|
’ĮĶ ĶĮĖ ’ĮĶ ’ĮĶŌ ŠĶ Į ÅĮ : ÜßĮ Å Įß ’ ’ĮĶŌ Ż ’ĮĶ ÅĮĶŌ ĪĮ Ć Į ą ąé ŽĄ ĪĮ Üéé éé Ė Įß ą ŌßĶ Ü ĶĖ ÜßĮĖ Å ĪĮ įĶ ąéĶ (Performance) ’ĮĶ ąĶĶĖ ŽĖĶ Ķ ą ÖßĶ ’ ŽĖĪ ĆĮ ’éé ’éĮĶéŌ ąĶ ĶĖ Š ’ĮĶŌ ąĶĶĖ ąßĮ ’Ķ Ż ĪĮ ¬Ė ĖĶéé ÜßĮĖ ÅĮĶŌ ’ ąĶĶĖ ą ŽĮ ĶĖ Š Ėß ŽĮĶ .Ėß’ .Ė ’ Ę ’ĮĶŌ ŽĪ ĶĖ Ą ĪĮ Ć Į ’ß ß Įß Ķéé ĖĶéééé ÅéĶĖ ą Å ąĶßĖ ĶĮßĮ ß ąĶ ĪĮ įĶ ą ¬ĖĪĮĖĮ’ Łß ą Ķ Ž ĮĶ ĖĶ ŻÕ ĆĮ Ą .Ė’ ą Į ’Ļ ĮĶ Į ŽĮ .Ė Ć Į ŽĄ ĪĮ ’ ą ĖĮß Ė ą ĖĮ ŽĮ ’éĮĶéŌ ŽéĪ ĶĖ ąéßĮ ’Ķ Ż Ü ŽĮ .ÅĮ ĪĄ Åß ’ ĶĮĢéĶé ŽĄ Åß ß ’ĮĶ ĶĮĖ Üß ß ŻÕ ą Ī Ķ ĖĮß ’ ĪĮ ¬Ėßé ÜéĖéé ąĶ ĶĖ ’Įąģ ą ’ĮĶ Ė ĶĮĶ ĶĮ .Ė .Ėß ĶßÕ Å ß ’ĮĶŌ ąĶßĖ ĶĖ Ė ’ĮĶ ÅĶĖ ĮĖ Į Ž ŌßéĶé ąßĮ ’Ķ Ż Ķ ĶĮĢĶ ’ĮĶ ĪĮ ’ Å įĶ ŽĮ ĪĮ ’éé ąé ŽĮ ĶĖ .Ė ’ĶĶ ĮĶ įĖĶĶ ąĶ ’ĮĶ ’ĮĶŌ ą . Żééé ’é ’éĶĶ ĮĶ Åß ’ Ś ĖĮ ’ ’ĮĶ Å ŽĶ ßĮĖ Ėßé Ž ’ĮĶŌ ŽĪ ĶĖ Ė Ķ ĶßŌ ĆĮ Š Ś ĶĖ ’ ĖĮ Ķ Ķ .Ė’ ąĖĄ ’ĄĶ ą ŌßĶ įĖ Å ’ĮĶ ĮĶ ąĪ ß Ķé ééĄ ą ĪĮ Ą ÉĮ ą ’ .ĖĶĮĖ ’ ß ÖĮßĮ ’ĄĶ Å ąééé ŻĮ ’ĮĶ Ų Ż ĶßĮ Ś Ć Į ą ą Ė ’Ą ÅĮ ąĖĮĖ ąéßé Ś ŽĖĶ Ć Ķ ’ĮĶ bubble-sort Ż ĶßĮ ĪĮ ąĖ Į Ė Ķé ĶĖ Ėßé’é ąĖ Į Ą ĪĮ ĖĪ ą ’ąĖĮĖ ąĶßĖ ą ŪĶĪ ĖééĮß ’ ĮĶ Å Öß ŽĮ .Ė Ą įĪ ąĶĢ ’ ą ¬ąĖ Į Ķ ’éĮĶ Å ĪĮ įĶ Ü ŽĮ .Ė ŲĶŌĶ ÅĶ ą ß ĮĖ ’Ą ą ’ĮĪéĮ ŠéĶ Į ’ĮĶŌ :ÅĮ Ķ ĶĮßĖ ŽĄ ÉĮ ą ĖĶĮĖ įĶ Įß .ąĶ Ś ąĖĪ ĖéĮąĖé ą ÅĶ ÜĮĖ ĶĖ ą Ėß’ ą ’ĮĪĮ ĪĮ ąĶ ĆĮ ’ĮĪéĮ ą ąĶ ą ’Ī ’ .ĖĮąĖ ą Ķ ĶĖ ąĖ ąĶ Ś ĪĮ ĮĶ įĖĶéĶé ’éąéĶ ĮĶ’ ’ĮĶŌ ¬Ė ’ Ėßß Ń ĪĮ ąĖĪ ß Åéé ¬’éĮĶéŌ Ķé ŽĮ Žß ¬Ėß Ż ąĖĪ ’ĮĪĮ ą Ė’ Łß Ėéé ¬éĪé Į ŽĮ ŽĖß ĶĢĶĮ Ėßß .Ė ’ ŽĄ ĮĶ ŃĪĄ ÅéĮ Žééé ąĖĪ ’ĮĪĮ ąĖ ąĖ ’Ķ Į ą Ė ą ĮĖ ąß Ėééé’é ąĖ Į Ą ĪĮ ą ’ąĶ ’ĮĶ ß Ķ Ķ Ķ įĖĪ Ķ .Ė ą ĮĖ .ĖéĶĮĖ ąééĶé ’ĄĶ ą ’ŌĶ ą ĶĮ ĖĶ ÅĮ Ž Į ĶĖ Ķé éĶ ĖĮß ’ ą ¬Ė’ ŲĶ ĮĶ Š Įß ą Š Ś ŠĶ Į ŲĶ ĮĶ ŽĄ ĪĮ ąĖ Į ’ĮĶ Ī ĖĶß ’ĮßĮĶ Ć Ķ ß ŽĄ ’ ĖĮ ’éé Śé éĄ ąé ĖéĖ’ Ž Š ’ąĖĪ ß ßĶ ŲĶ ’ß .Ė ĖĮ ’ ’’ method Ą ¬ĖĶ ĶĮĶ ąĖ Į ĖĶß ąĶßĖ ĖĮß ŽĄ ĪĮ ąĖ Į ’ĮĶ Å ß ÅĮ Ī Å ą Ą ĖĮ ’ĮĶ Ė’ Ķé ąĶ ’ĮĶ Ķ ÜĮß ŽĮ ą ¬ĖĖ ŻĮ Ė ’ĮßĮĶ Ė Š .ĖĶĮĢ’ ’ ĖĮ ĶĖ Ō Į ĪĮ Ńé ĖĮ ĪĮ :ÅĮ ĶĮĶ ŽĮ ĪĮ Įß ÅĶĖ ’ĄĶ ’Į ÜßĮ ĪĮ ’ ĪĮ ’éé ĖééĮ ŻĖé é ą Å ŽĄ ’ ą ŽĮ .Ė įĶĮĖĖß ’ Ė ąé įĖ ’ĮĶĮ Ż Ė ą ¬Ė ĶÕĶ ĮĶ ’ ’ß ąĶ ’ĮĪ .Ėééé ąĖĶéé ’ą ÜĮĖ ’ ĖĮ ĆĮĶ ĖĶĮĖ ’ĮĶ ĶĖ ’ Ń ¬ÅéĮ ąģ Ś ’ĮĶ ą ’ ß ĶĖ ą ÅĮ ąĪĶ ĶĖĄ ’ ĖĮ .Ė įĶĮĖĖß ’ Åß ’Į įĶßĶĶ ĖĮ ĪĮ Ė ’ééĮ é String Š ¬(text manipulation) Ž įĶ Ė ’ąĶ ĶĖ Śé ą Ķ Ķ ¬Ė ĶĢ Ķ String ą ’Ą ĪĮ .ÅĮ ’ ĖĮ ąĶ ą ĶĖ .Ėß ĖĮ ĖĖ ’ Ś Ė Ėß’ ą ÉĮ String Üé ŽéĮ .Ė’ Ć Į String ĪĮ Ė ĪĮ Ń ąĖ Į ĪĮ ąĄ Žß ŲĢé Ėßé Ėé ĪĮ ĮĶ String ą ’ Įß ’ ß ’ .ÅĮ Ž Ķ ĆĮ ŽĮ ĪĮ Ą ŠĶ Į ą Ė’ ąĖ Į ’ĖĪ ’ĮĪĮ ĪĮ ĆĮ ¬Ė’ ĪĮ ąĖéé éĮ ąé Ķßéé Å ĶĖ ŽĮĶ .Ėß’ ŲĶ String ĶÕ .Ėß’ String ÅĶ ŁŌ :Ü Īéé MailBot .Ėß’ MailBot Ż ą ĶßĶ Ś Ė ÓĶ Ü ŽĮß ą ’ééßĶ Į Å ŠĶĖĄ ÜĶĮ ŹĶ Ü ĪĮ MIME ŽĮß ŌßŌ ŃĪĮĖĶ ą ĮĶ MIME ŽĮßé ŌßŌ ¬Ķ ’Ą ’ĮĶ .ĖĶĮĖ Ż Ķ ’ ĶĖ Įß ąĖ Ķ MailBot .Ėéé’é ŃĪĮĖĶ Ķ ŁŌ ’ĮĶ ąĖĪ Ī Ś ĪĮ ąĖ Į Óßé ĶĖ .Ė’ ĖĮ String ’ Ś ŽĮß Å Ķ ŽĮßÖ Ō Ķ ’ĮĶ ÅéĮ ĶĮĶ ą ĮĶ ’Įß ß Ė Ķ įĖßĶß Ž ĮĶ įĶ ĮĶ Ķ Ś ŁéééŌé MailBot .Ė’ Ņ Ķ ŽĮ ĶĖ (’ĶĮĢ ŠĖĮ Ėß ŃĪĮĖĶ ŽéĮĶééé ¬Ėéé ’ ’ĮßĮĶ ŽĮß Ō Ķ ŃĪĮĖĶ ’ĮĶ ĮĶ ÅĶ ąĖĖ .Ė’ ĮĖ įĖĪ ÅĮ ąĖĖ ŁŌ ’ĮĶ ÖßĶ ÅĶ Ś ąĖĖ ŁŌ Š ’ĮĶ Ų ’ ŠĶ Į Ś ĪĮ ’ß : Ż’
public class AwfulRegExpMatcher { ąé ’ĮąĶ Ķ ¬Ė ĮĖ ’ĮĶ ¬ÅĶ ŁŌ Ż ĶßĮ Š ŽĮ ĶĮ ’ Žé é ąé ąĖéĖ ŁŌ ’ ą ’Ą ĪĮ .Ė’ ąŌ Ė ąĖ Į ŽĄ ĪĮ Ś Ė ĮĖ Į Ė ąĖ Į ŽĄ ĪĮ ĖĮß’ ą Ķ Ķ ¬ÅĮ ą Įß įĖßĶß ’éé ĖééĮ ĪĮ ĖééĮßé’ ą ’Ą ĪĮ .ĖĪ ĖĖ ąĖĖ ŁŌ ’ ąéŌéé ąĖéĖ ŁŌ ĪĮ ąĶßĖ ąĖ Į ’Įß ¬Ė įĶĮĖĖß įĶßĶĶ .ĖĶ’ ĶÕ ą ÖßĶ ’ĮĶ ’ß ĖĖ Ž ĮĶ ąĖĖ ŁŌ ’ĮĶ įĶĖ Ž ŠĶ Į ¬ĶĪ Š ŲĶ :Å Ćß Īß ’ß Ė’ ĖĮ ĮĶ ąĖĖ ŁŌ ĪĮ ĖĖ ąĖ Į ŽĮ ą
public class BadRegExpMatcher { ÅééĪé Ė ’ß ÅĶ Ś ŁŌ Ķ ĶÕ Å Ž Ķ ąĖĖ ÅĶß ĶĖ æĖĶĮĖ ’ééĮ ą ĶĶ’ ĮĶÕ Š ŲĶ ŽĮ ąĖ ąĖĮĖ ŁŌ ’ ĶĶĪ ÜßĮ ąĶĖ ĶĖ .ĖĶĮĖ ’ĮßĮĶ ÅĮ ’ĄĶ ĶÕ ĪĮ ’ß .Č įĖĶĶ ĶÕ ĪĮ ŽĖĮĖ Žéé ’ĮĶé Ėé’ ŻĪ ĮĶ Ėß ąĖ ’ĮßĮĶ ąĶ ąĖĖ ŁŌ ĪĮ Ėß’ MailBot .Ė ĖĮ String Ś Ėß ąĖĮĖ ŁŌ ÅĮ ĶĮĶ ą ’ ĖéĮßé’ ą Ė’ ĮĖ ’Įß ’ ß ’ß ¬Ė įĶĮĖĖß String Į ĖĮ é ŽĖß ŁŌ ’ĮĶ ÅĮ Ķß Ė ąĪ ’ß ÅĶ Ś ŽĮß ą ĮĶ ŽĄ .Ė ĖĮ String Ś BadRegExpMatcher
BadRegExpMatcher dateMatcher = new BadRegExpMatcher(...); MailBot ĶéĮ ’é é Ė’ ĖĮ ĮĶ Ü string ąĖĖ ŁŌ ¬ŻßĖ ąĶĖ ĶĖ ąĖé ąĖĮĖ ŁŌ Ž ą ß ¬ą Ė’ ÅŌ ą Ķ ŽĮ ĖĮĖ ĖĮß Ō ą BadRegExpMatcher ĪĮ ąĖ Į ’ĮĶ ą ÅĮ ŽĄ ’ ą ŽĮ .ĖĶĮĖ Ī ßĖ Ėéé Ė’ ÅŌ Ņ ÅĶ Ś ŹĶ ŽĮß Ś ą ŽĄ Ė ĶßÕ ’éé ßĖ ąé ąĖ ąĖĮĖ Ž ß ąĖĖ ŁŌ įĖßĶß Ė ĖĮ String ’ Ķé ŽĮß Ō Ķ ’ĮĶ ĖĶß ĶĮ ’ß ¬ĖĶ ĶÕ ą ą ŽĮĖ ÅĮ Ž Ė ĖĮß ’ ŽĮ ¬Ė ĖĮ ’ ßĖ Ė’ ŃĪĮĖĶ MailBot ą ’ Ż Ėßé’éé ŌßéĶ MailBot ’ĮĶŌ ą Ü ¬Ė ĶĮĢĶ ĖĶ Ķ įĖĪ .ĖĶĮĖ Ō ĶĮ BadRegExpMatcher Š ĪĮ ąĖ Į ŽĮ ’ĮĶŌ ą ą ’ééßĶ ĖéĮßé é ąé Ķé é Match ’ Ś ÅĪ ą Ė ą ĮĖ ąß ÅĪ ’ ą ĖĖ Ń ĮĶ getMatchString() ß getLength() ¬getOffset() ’éé Śé ĖĮ ą ŽĄ Ėßß .Ė’ įĖĪ Ėß ĮĶ ’ĄĶ String Ś ąéĮĶĄ Ś ĖĮ ŻĪ Žß ÅĮ String Ś ĖĮ ĪĮ Ķ ĮĪĶĮ Į Match ’ĮĶé ąé Ė’ ĖĮ ’ ’ Ś Īß ¬ÅĮ ąĖĮĖ ŽĖĶ ’ ß char[] .ĖĶĮĖ ’ ŃĪĶĮ ŽĮßĮĶ ąĶ ’ĮĶé ĖéĮß’ ą ’Ķ ą ĮĶ įĖßĶß Ė’ Ķß ĮĶ BadRegExpMatcher ĪĮ ąĖéé éĮ ’éß .ÅéĮ Ķé éé éé ’ĮĶ ąĶ ą ą Ė Ž ŽĄ ĖéĖ MailBot ’ĄĶ ’ĮĶ ą įĶŌ ¬ĖĶĮĖ Ż įĶĖ ĶŌ BadRegExpMatcher Ż String ĪĮ ąĖ Į ĪĮ įĶĮĖĖß ĪĮ Ž Ė :ÅĮ Ķ ąĖ ŁéŌ ’ĮĶ ĖĶß ą ’Ą ĪĮ ’ß .Ė’ ÖßĶ ą ’Įß ŃĪĮĖĶ ąßß ÅĮ Ž ¬Ė ĖĮ įĖĪ String ’Į BadRegExpMatcher ŽĖß ŽßéĮ .Ė ąĖ Į Ķ ’ String ĪĮ ß ĖĶĮĢ Ķ ĮĶ Ėß ŲĖ Ėß Ķééé Åé Ė’ ąĖ Į ŽĄ ĪĮ ą ĮĶ ’ĮąĶ ąĖĪ Ī Ś Ė ’ĮĶŌ ĮĶ é ą Ė ĮĖ įĶ ÅĶ ąĖĪ Ī ĮĖ ĶĮ ’ .ÅĮ ąĖĮĖ ĶĮĶ ąĖéĖ ĆééĄ ąĶ Ü ÅĮ Ž ŽĪ ŽĄ ¬Ė String Ž ą Ķß .Ė Ķ ŠĶ Į Ś Ńéé ’ Ž ą ’ß ą ĖĶ ŲĶ ĮĶ BadRegExpMatcher ŽĮß ’ ąß ĮĶ Ėßé įĖßĶß ÅéĶé Ėé ’ Ė BadRegExpMatcher ÜßĮ ąĶĖ ĶĖ æĖ Ėéé’é Žééé ŽĄ ŽĮßéĮĶ ą ’ Ķ Ķ ą ĮĶ įĖßĶß Ė .Ė Ü .Ėé ĖĮ String Ś ĶĖß ĶßŌ ŁŌ ’ĮĶ Ė Ė ąĶĖ ĶĖ .ĖĶĢ ĖééĮ ĮĶ ŽĄ ĖéĮßé ŽĮßĮĶ Ė ŻĪ ĶĮ ĖĮĖĶĶ ’ ÅŌĮ Ė ĪĮ ąĖ Į ’ß ¬Ė Ž Ķ ŽĮ ŻĮ ’ĮĶ ’ßĶ ĖĮß ’ Ž) .Ė :Ż’ ’Ķ ĮĶ Ķ ŠĶ Į Ś Į ĶĖ (.Ė įĶĮ Ė ŽĄ
class BetterRegExpMatcher { ŁéééŌé ĆßŌ ÅĶ ą įĖßĶß Ž ÜĖ ą ŽĮßĮĶ ŻĮĪĮ ĖĖ ŠĶ Į ĶéĪ Üéé ąé ĮĶ match() ĖéĮßé ’ ŽßĮ MailBot .ĖĖ’ Ń ĮĶ ąĖĖ :Ė ’ĮßĮĶ
int resultOffset = dateMatcher.match(myBuffer, thisHeaderStart, ŽĮßé ą .Ė’ Ł ĖĖ ’Į ĖĮ ŽßĖ ĶÕ ĖĶß ŲĖ Ć Ķ ŽĮ ą ’éĮĶéŌ ąéééé ąé ŽĄ ŠééĶé ééĮ ’éĮĶéŌ Śé ¬ąĖ ąĮ ÅĶ Ś .Ė’ Ė Įß lots-of-simple-methods match() Ōéß ąĖ ŻĮ Ķ ŽĮĪ ą ’Į ’ ĖĮ ĖĶ ŁĖ Ķ ßĖ do-nothing ’ééĪ ąĖ įĖĪ ß ĖĮ ĖĮß ’ .ĖĶĮĖ ’ é .Ėééé Žéé Ė Ś ’ĄĶ Ų ’ĮĶ ¬ÅĶ ąĖĖ ŁŌ Š ’éé éé Šé é Łßé ’éąééĶé ąééŌé Sun JDK 1.3 ĪĮ ąĖé Į ’é Š Ėß’ ĮĶĮ Ķ Ķ Ķ µ° Ķ BetterRegExpMatcher ŁéééŌ ĪĮ ą ąĖ įĪ ąĖ Ś ĪĮ ąĖ Į .BadRegExpMatcher ĪĮ Ķ Ķ Ķ Ē ĖĮß ’ BetterRegExpMatcher ¬Ė’ ’ ą Ķ ĶĪ .Ėß ĮĶĮ Ėß BadRegExpMatcher ’ ąĖ ÖĮßĮ ąéĮĶĄ ĪĮ įĖßĶß Žé é ĖĶé ĶĮĖĮß ĮĶ MailBot ŽĮßéĮĶé BadRegExpMatcher įĶßĶéĶ ’ Ś ą ĶĖ ¬Ė ÜĖ String Ś ą ÅĮĖ ą įĶ ĮĶ ’ĮĶé BadRegExpMatcher ’ééĪ ąĖ ĪĮ įĶ ą ŽĮ Ć .Ė ĖĮ ÜéĖéé įĶ ĮĶ Ś ą ą ĮĶ String ŽĄ ¬įĖßĶß Ž ą ŽĄ ’Ķ Ė ÅĮ ŽĄ ’ ą ą ¬ĖĖ’ Ņ ĮĶ įĶĖ ’ ą Ķ ŽĮ .Ė’ ŽĄ ÜßĮ ą ĖĶ ’ Ž ą ĖĮąĖĮĖ ŻĮ ĮĶ Ķ ŽĮ ą ą Śé Ė Įß’ ŻĮĖ BadRegExpMatcher ą ß MailBot ą .ĖĖĶ ÖßĶ ’ĮĪéĮ Žé Ž ąĖ ’ĮĶ ’Ō ÅĶ String Ė ą ĮĖ ĶßĶ String .ĖĶ’ ĶÕ ą ąĖĪ Üéé ąéĖ Öß Ś ŽĮß ą String Š ¬Łß BadRegExpMatcher Ü ĶĖ éąĖĮĖ ąĖéß ’ĮßĮĶ ą ß ąĖ ’ĮßĮĶ ą ąĖ Öß Ś ĶĖ .Ė’ ĪĮ ą ’Ą ą ĖĮß ’ ßĖ Ķ ’ß ¬ĖĮß’ ß ĖĶĮĖ ÅĶ ŽĄ ą ĮĶ ’éĖééé ąĖ Öß Ś ĶÕ ĪĮ ŠĶ Į Ś ŲĶ .Ėß ÜĖ ÅĶ ŽĄ ąé ’éĖ ŽĮ ’ ’ß ¬ĖĖ’ Ń ŽĄ įĶĢ ŲŌĮ Õ ĮĶ ŠĶ Į .Ėß’ Ż ’ĮĶ Ń Å Ś ą ÅĮ Ž Ķ .ÅĮ JDBC ResultSet ŠĶ Į ąĖ Öß ĪĮ ąß Ś ResultSet ŠĶ Į Ś ŽĮß ą ĮĶ Ėß Ē ’ ŌĮ Ś ’ ŠĶ Į ąĖé ąéģĮĶĮ ’ééé Ńé ’Ą ą ĖĮß ’ JDBC ĶßĮĶĖ ’ß ¬Ė ąģĮĶĮ Ćéé Ķé Ž ą .Ėß ResultSet ’ĮĶĮ Ś ĮĶ ’ ŌĮ Ś ąß éé ’éß ¬ĖĖ’ Ń Ü ŽĮ ą ĮĶ ąĖĮĖ ’ĖĶßĶ ’ ąĶ Č ÜĖ ĆßŌ Ń ą ResultSet Ś ĪĮ įĶĮßĖ ŽĶ ĮĶ Ą ĖĮß ’ é Ī Į Žß ĖĶĢ’ ĮĶ Å ąĪ ĪĮ ÉŌ ŽĮ JDBC ĖĶß ĶĖ .Ė .ÅĮ ąĮĶ ’ ŌĮ ’ Ž ’ Å ß įĪ ĖĶĮĖ Į ŃĪĶĮ Ėééé Ü ĖĮß ąĖ ÖĮßĮ ą įĖĶ ’ ąĪ ĆĮĶ Ü ŽĮ .Ė ĶéÕ ĪĮ String ĪĮ ąĖ Į ŠĶ Į ŲĶ RegExpMatcher ĖĶß ĶĖ ąé Ķé ŽĮ .ÅĮĖ ’ĮĖ ą Ķ ’ Å Ķ ’Ė Żééé .ĖéĶ’ ĶÕ ą ’ß ąĪĮß ŽĮĶ ß ¬Ė Ż ’ĮĶ Å ąéßéß ĆééĮ ąĖ ÖĮßĮ ĪĮ ąĖ Į ¬ąĖĪ ’ĮĪĮ ’Ķ Į ’ĮĶŌ Ėé Īß ’ß ¬ĖĶ ĶÕ ą "Ķ Ī " ŠĶ Į Ėß’ Ę Žß ¬ÅĮ ĪĄ ĖĶßé Ėééé ’éé Ėééé’é ĶĮĶéĶé ’éß ąĪĮß ą Ėß ŽģŌ ’éĮßĮĶ ’ąĶ ą ĖĶĮĖ Ėßß ’ßĶ įĖßĶß ’ Ķ RegExpMatcher éĄ ąé Ėéé ’ĶĶ .Ė’ ąĖ Į Ą ĪĮ ĖĪ Ü Į ą ąĖ .Ė Ž ’Ą ą Ī ĮĶ Ą ĖĮß ’ ąĖ ÖĮßĮ ĪĮ ąĖ Į ĖĶ Ķ įĶ ąĪĮĖĮ ą ÅĮ įĶßĄĖ ą ŻĪ ŽĪ Ė’ ’Įß ĮĶ ĮĶ BadRegExpMatcher ą Łß ąĶ ąŌ .Å ŽĄ ŽĄ Üé ŽéĮ é .ĖéĖ’ Ņ Į MailBot ą ĮĶ įĖßĶß String ĖĮ ’ĮĶĮ .Ė ĖĮ BadRegExpMatcher Ž String Ė ’ĪĶĮ ąĶ ĖĶ ’ĮĶ ĮĶ ąĖĪ Ī Ś ’Įß ĶĮ ĖĮß’ ĶĮ įĖ ß ĖĖ’ ŻĮ ĮĶ ’ĮßĮĶ ą ĮĶ įĖ Ė ŽĄ Ė ĖĶĶ Ķ ąß ’éĶĮĪéĮ é Ķé ŽéĮ ŻĮ .Ė ’ĶĶ ĖĖĶ’ Ķ ’ĮßĮĶ ĪĮ ą ĮĶ .ÅĮ Ü ĖĶĮĖ Į Profling ą ’ĄĶ Å ąĶ ą ß ¬ĖĶĮĖ ’ĄĶ Ķ įĖĪ Ķ ąĶ ą ÉĶŌ Ü ĖĶĮĖ Ü ĶÕ ŽĮ ĪĮ ą ’ąĶ ’ĮĶ Ü ŽĮ .ĖĶĮĖ Šé Śé ŠĶ Į Ķ ą ’Ą ĪĮ ¬Ė ąß Ü ą ŽĮ ĶĖ ąĖ ąéĶ ĶĖ Ė ¬ÅĮ ĶĮßĖ Ė’ ąĖ Į ŽĄ ĪĮ ą ’ĮąĶ Ž ß ĪĮ Ė .ĖĶ Š ’Ķ Į ĖĶ ’ą ’Ķ ŲĶ įĶ Åß ’ĮĶŌ ’ĮĶ įĶĢ Ķ ß įĶĢ Ķ įĶĶ ’ĮĶ ą ŽĮ ŻßĖ Å ĶĖ . Ż’ ’ĶĶ ĮĶ įĶßĶĶ ’ ĖĮ Ń |
|
|
![]()
Copyright 2001, PC WORLD Iran/ . All rights reserved.