Programu nyingi zina upofu wa kiakili. Watafurahia kurekebisha mfumo wa usambazaji (distributed system) au kupambana na mfumo mpya (framework), lakini watatumia dakika ishirini kufanya marekebisho ya maandishi kwa mkono ambayo yanapaswa kuchukua sekunde kumi. Sababu huwa ni ile ile: regular expressions zinaonekana kama mchanganyiko wa alama zisizoeleweka. Mtindo wa kawaida ni ukuta wa alama za mkwaju (slashes), mkwaju wa kinyume (backslashes), na alama za uandishi zinazoonekana kama zimetumwa kutoka kwenye modem ya miaka ya 1990. Machafuko hayo ya kuonekana huwafanya watu wenye uwezo wa kiufundi waogope ujuzi huu wenye thamani kubwa.
Habari njema ni kwamba regex si ngumu. Ni nzito. Alama hizo zimebeba maana kubwa katika nafasi ndogo, hivyo jicho lako linasoma mchanganyiko wa bila mpangilio pale ambapo kuna maelezo sahihi sana. Mara tu unapopata mtindo sahihi wa kiakili, unaacha kujaribu kutafsiri alama moja baada ya nyingine na badala yake unasoma umbo linaloelezewa. Unapofanya hivyo, machafuko hayo yanaisha kabisa.
Mtindo, Sio Programu
Mabadiliko ya msingi ni kuelewa regex ni nini hasa. Kadi nyingi unazoandika ni za kufuata hatua (procedural): fanya hili, kisha fanya lile, kagua sharti hili, rudia tena. Regex si utaratibu (procedure). Ni mtindo tuli (static pattern) unaoelezea jinsi maandishi yanapaswa kuonekana. Hauandiki maelekezo ya jinsi ya kutafuta; unampa injini ya kulinganisha (matching engine) mchoro na kuacha ifanye kazi yenyewe.
Ifikirie kama unavyoelezea maumbo kwa Kiingereza cha kawaida:
- Namba ya tarakimu tano.
- Anwani ya barua pepe.
- Mstari unaoanza na herufi kubwa.
Hicho ndicho regex kinachofanya, isipokuwa kinatumia alfabeti iliyofupishwa. Unapoona \d{5}, hauoni uchawi. Unaona "tarakimu, mara tano." Unapoona ^[A-Z], unaona "mwanzo wa mstari, unaofuatiwa na herufi moja kubwa." Ujuzi huu si kukariri. Ni kujifunza kutazama mtindo na kuutafsiri tena kuwa maelezo hayo ya kawaida. Mara tu unapoweza kufanya tafsiri hiyo, hofu huondoka.
Mahali Ambapo Muda Huenda Hasa
Watu huwa wanajifunza regex baada ya kuteseka vya kutosha. Njia bora ni kutambua kazi zinazohitaji mtindo kabla ya kupoteza mchana mzima kuzifanya.
Ikiwa unahitaji kupata kila tarehe katika hati yenye kurasa mia mbili, regex itazipata kwa mara moja tu. Ikiwa unahitaji kuhakiki ikiwa mtumiaji aliandika URL halali kabla ya programu yako kuikubali, mtindo unaweza kudhibiti umbo la msingi la anwani hiyo. Ikiwa unasafisha maandishi yaliyonakiliwa kutoka kwenye tovuti na unahitaji kuunganisha nafasi nyingi kuwa nafasi moja, regex ya kubadilisha inahitaji herufi nne tu. Ikiwa unatoa data kutoka kwenye kumbukumbu za seva (server logs) zenye mchanganyiko, regex mara nyingi ndiyo daraja pekee la kuridhisha kati ya maandishi yasiyopangwa na ripoti iliyopangwa.
Hapa kuna sheria rahisi ya kufuata: ikiwa unakaribia kufanya marekebisho ya maandishi mara hamsini kwa mkono, acha. Badala yake, andika mtindo (pattern). Kurudia kwa mkono si polepole tu; si cha kuaminika pia. Unaweza kukosa mara ya arobaini na saba au kuweka kosa la uandishi kwenye mara ya tatu na tatu. Mtindo unafanya kazi mara moja, kwa usahihi, na unarekodi sheria uliyokuwa ukitumia tangu mwanzo.
Mzunguko wa Kujifunza Unaofanya Kazi
Usijaribu kuandika mitindo kamili kutoka kichwani. Hivyo ndivyo kukatishwa tamaa kunavyojengeka. Badala yake, fuata mzunguko mfupi unaokufanya uendelee mbele bila kupotea kwenye sintaksi.
- Elezea umbo kwa maneno. Kabla ya kugusa alama maalum, andika hasa unachotaka. "Tarakimu nne, ikifuatiwa na mkwaju, ikifuatiwa na tarakimu mbili, ikifuatiwa na mkwaju, ikifuatiwa na tarakimu mbili." Ikiwa huwezi kuisema kwa wazi, huwezi kuunda mtindo wake.
- Tengeneza rasimu ya kwanza. Badilisha maelezo yako kuwa mtindo wa msingi ukitumia alama pana zinazofaa. Usijali kuhusu ukamilifu. Unajenga mfano (prototype),
