Code කරද්දි, data එක්ක වැඩ කරද්දි, එහෙමත් නැත්නම් නිකන් text file එකක මොනවාහරි හොයද්දි, ඔයාට කවදාහරි හිතිලා තියෙනවද "ආහ්, මෙන්න මේ වගේ format එකේ තියෙන ඔක්කොම ටික හොයාගන්න ක්රමයක් තිබ්බනම්..." කියලා? 🤔 උදාහරණයක් විදියට, ලොකු text එකකින් ඔක්කොම email addresses ටික විතරක් අදින්න, නැත්නම් user දාන phone number එක හරි format එකේද කියලා බලන්න... අන්න ඒ වගේ වැඩ වලට තමයි Regular Expressions (Regex) කියන සුපිරි වීරයා පිහිටට එන්නෙ! 💪
මුලින්ම බලද්දි Regex pattern එකක් ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
වගේ පිස්සු වගේ පෙනුනට 😵💫, බය වෙන්න එපා! ඒ හැම symbol එකකටම තේරුමක් තියෙනවා. මේ article එකෙන් අපි බලමු Regex කියන්නෙ මොකක්ද, ඒකෙන් මොනවද කරන්න පුළුවන්, සහ ඒකෙ මූලික කරුණු සරලව ඉගෙනගන්නෙ කොහොමද කියලා.
Regex කියන්නෙ ඇත්තටම මොකක්ද? 🤔
සරලවම කිව්වොත්, Regex (Regular Expression) කියන්නෙ සෙවුම් රටාවක් (search pattern) නිර්වචනය කරන අක්ෂර මාලාවක් (sequence of characters). ඒ කියන්නෙ, ඔයා හොයන්නෙ මොන වගේ දෙයක්ද කියලා describe කරන පොඩි භාෂාවක් වගේ දෙයක්.
මේක හරියට ඔයාගෙ computer එකේ තියෙන "Find" (Ctrl+F) command එකේ සුපිරියටම advanced version එකක් වගේ. 🦸♂️ Find වලින් කරන්න පුළුවන් නියමිත වචනයක් හොයන එක විතරනෙ. ඒත් Regex වලින් ඔයාට පුළුවන්:
...වගේ තව ගොඩක් දේවල්!
ඇයි Regex පාවිච්චි කරන්න ඕන? මොනවද වාසි? ✅
Regex ඉගෙනගන්න එකෙන් ඔයාට ලැබෙන වාසි ගොඩයි:
grep
, sed
වගේ command-line tools වල, databases වල Regex support කරනවා. ඒ නිසා එක තැනකදි ඉගෙනගත්තම ගොඩක් තැන්වල යොදාගන්න පුළුවන්. 🌐Regex වල මූලික Building Blocks 🧱🏗️
Regex pattern එකක් හැදෙන්නෙ සාමාන්ය අකුරු සහ විශේෂ අර්ථ තියෙන අක්ෂර (Metacharacters) එකතුවෙලා. අපි වැදගත්ම ටික සරලව බලමු:
cat
කියලා Regex එකක් ලිව්වොත්, ඒක හරියටම "cat" කියන අකුරු තුන තියෙන තැන් හොයනවා. 🐈.
(Dot): ඕනෑම එක අකුරක් (new line එක ඇරෙන්න). h.t
කිව්වොත් "hat", "hot", "h_t", "h8t" වගේ ගොඩක් දේවල් match වෙනවා.*
(Star): ඊට කලින් තියෙන අකුර/group එක බිංදුවක් හෝ ඊට වැඩි වාර ගණනක් තියෙන්න පුළුවන්. ca*t
කිව්වොත් "ct" (a බිංදුවයි), "cat" (a එකයි), "caat" (a දෙකයි) ඔක්කොම match වෙනවා.+
(Plus): ඊට කලින් තියෙන අකුර/group එක එකක් හෝ ඊට වැඩි වාර ගණනක් තියෙන්න ඕන. ca+t
කිව්වොත් "cat", "caat" match වෙනවා, ඒත් "ct" match වෙන්නෙ නෑ.?
(Question Mark): ඊට කලින් තියෙන අකුර/group එක බිංදුවක් හෝ එක වාරයක් තියෙන්න පුළුවන් (Optional). colou?r
කිව්වොත් "color" (u නැතුව) සහ "colour" (u ඇතුව) දෙකම match වෙනවා.\
(Backslash): Metacharacter එකක විශේෂ තේරුම අයින් කරලා, ඒ අකුර සාමාන්ය විදියට match කරන්න (\.
කිව්වොත් තිතක් "." match කරනවා) සහ විශේෂ sequences පටන් ගන්න පාවිච්චි කරනවා.[]
(Character Set): වරහන් ඇතුලෙ තියෙන අකුරු වලින් ඕනෑම එකක් match කරනවා. gr[ae]y
කිව්වොත් "gray" සහ "grey" දෙකම match වෙනවා. [0-9]
කිව්වොත් ඕනම ඉලක්කමක්. [a-z]
කිව්වොත් simple a ඉඳන් z වෙනකන් ඕනම අකුරක්. Range එකක් දෙන්න පුළුවන් ([a-zA-Z0-9]
- ඕනම අකුරක් හෝ ඉලක්කමක්).[^]
(Negated Character Set): ^
ලකුණ bracket එක ඇතුලෙ මුලින්ම තිබ්බොත්, ඒ bracket එකේ නැති ඕනම අකුරක් match කරනවා. [^0-9]
කිව්වොත් ඉලක්කමක් නොවන ඕනම දෙයක්.^
(Caret / Start Anchor): String එකක/Line එකක මුල match කරනවා. ^Start
කිව්වොත් "Start" කියන එක match වෙන්නෙ ඒක මුලින්ම තිබ්බොත් විතරයි.$
(Dollar / End Anchor): String එකක/Line එකක අග match කරනවා. end$
කිව්වොත් "end" කියන එක match වෙන්නෙ ඒක අගටම තිබ්බොත් විතරයි.|
(Pipe / Alternation / OR): දෙපැත්තෙ තියෙන patterns වලින් එකක් match කරනවා. cat|dog
කිව්වොත් "cat" හරි "dog" හරි match වෙනවා.()
(Parentheses / Grouping): Pattern එකක කොටස් group කරන්න පාවිච්චි කරනවා. (abc)+
කිව්වොත් "abc", "abcabc", "abcabcabc" වගේ match වෙනවා. Match උන කොටස් capture කරගන්නත් මේක පාවිච්චි වෙනවා.\
එක්ක):\d
: ඕනෑම ඉලක්කමක් (Digit). [0-9]
ට සමානයි.\D
: ඉලක්කමක් නොවන ඕනෑම දෙයක් (Non-digit). [^0-9]
ට සමානයි.\w
: ඕනෑම Word අක්ෂරයක් (Word character - අකුරු, ඉලක්කම් සහ underscore _
). [a-zA-Z0-9_]
ට සමානයි.\W
: Word අක්ෂරයක් නොවන ඕනෑම දෙයක් (Non-word character).\s
: ඕනෑම හිස්තැන් අක්ෂරයක් (Whitespace - space, tab, newline වගේ).\S
: හිස්තැන් අක්ෂරයක් නොවන ඕනෑම දෙයක් (Non-whitespace).\b
: වචනයක මායිමක් (Word Boundary). Word අක්ෂරයක් සහ non-word අක්ෂරයක් අතර තැන. \bcat\b
කිව්වොත් "cat" කියන සම්පූර්ණ වචනෙ විතරක් match වෙනවා ("catalog" වගේ එකක තියෙන "cat" match වෙන්නෙ නෑ).Puzzle එක හදමු! සරල Regex උදාහරණ කීපයක් 🧩
\bapple\b
\d+
\w+@\w+\.\w+
(සැබෑ email validation මීට වඩා ගොඩක් සංකීර්ණයි!)^(?:\+94|0)?7[0125678]\d{7}$^
: පටන් ගැන්ම.(?:\+94|0)?
: "+94" හරි "0" හරි තියෙන්නත් පුළුවන්, නැතිවෙන්නත් පුළුවන් (Optional group). ?:
දාලා තියෙන්නෙ මේක capture කරගන්න ඕන නැති නිසා.7
: ඊලඟට 7.[0125678]
: ඊලඟට මේ ඉලක්කම් වලින් එකක්.\d{7}
: ඊලඟට හරියටම ඉලක්කම් 7ක්. {7}
කියන්නෙ quantifier එකක් - හරියටම 7 වතාවක් කියලා.$
: අවසානය. (මේකත් හැම format එකක්ම cover නොකරන්න පුළුවන්!)Regex එක්ක වැඩකරන්න Tools 🛠️
Regex ඉගෙනගන්න, test කරන්න නියම tools තියෙනවා:
re
module එක, JavaScript වල RegExp
object එක).grep
, sed
, awk
වගේ tools Regex එක්ක පාවිච්චි කරන්න පුළුවන්.Regex ඉගෙනගන්න Tips ටිකක් ✨
.
*
+
?
[]
වගේ මූලිකම ටිකෙන් පටන් ගන්න.අවසාන වශයෙන්... 🏁
Regex කියන්නෙ මුලදි ටිකක් බය හිතෙන, ඉගෙනගන්න පොඩි effort එකක් දාන්න ඕන දෙයක් තමයි. ඒත් ඒ effort එක දැම්මට පස්සෙ ඔයාට ලැබෙන බලය 💪, කාලය ඉතුරු වෙන විදිය ⏱️ එක්ක බලද්දි ඒක අනිවාර්යයෙන්ම වටිනවා! Text එක්ක වැඩ කරන ඕනම කෙනෙක්ට Regex කියන්නෙ අත්යවශ්ය කුසලතාවයක්.
බය නැතුව පොඩ්ඩක් online tool එකක් අරන් experiment කරලා බලන්න. ඔයාටම තේරෙයි ඒකෙ තියෙන ආතල් එක! 😉 Happy Regexing! 🚀
Member since 2025-04-09 13:55:06
Comments
Please login to post a comment.
No comments yet. Be the first to comment!