|
Regex නම් රාක්ෂයා හීලෑ කරගමු: Text Patterns හොයන සුපිරි බලය! 🧩🔍  

Regex නම් රාක්ෂයා හීලෑ කරගමු: Text Patterns හොයන සුපිරි බලය! 🧩🔍 

technology programming
By Rasanjana 2025-04-26 10:27:14

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 වලින් ඔයාට පුළුවන්:

  • "ඉලක්කම් 3ක්, පස්සෙ ඉරක්, ඊට පස්සෙ ඉලක්කම් 4ක්" වගේ pattern එකක් හොයන්න.
  • "abc" වලින් පටන් අරන් "xyz" වලින් ඉවරවෙන ඕනම දෙයක් හොයන්න.
  • Email address එකක format එකට ගැලපෙන දේවල් හොයන්න.
  • Word එකක් මුල තියෙනවද, අග තියෙනවද කියලා බලලා හොයන්න.


...වගේ තව ගොඩක් දේවල්!

ඇයි Regex පාවිච්චි කරන්න ඕන? මොනවද වාසි? ✅

Regex ඉගෙනගන්න එකෙන් ඔයාට ලැබෙන වාසි ගොඩයි:

  1. සුපිරි සෙවුම් හැකියාව (Powerful Searching): සාමාන්‍ය text search වලින් හොයන්න බැරි complex patterns උනත් ලේසියෙන් හොයාගන්න පුළුවන්. 🔍
  2. දත්ත වලංගුකරණය (Data Validation): User input (emails, phone numbers, passwords, credit card numbers වගේ) ඔයාට ඕන format එකටම තියෙනවද කියලා check කරන්න පුළුවන්. Website/App හදද්දි මේක නැතුවම බැරි දෙයක්. 🛡️
  3. දත්ත උපුටාගැනීම (Data Extraction): ලොකු text ප්‍රමාණයකින් (log files, web pages, reports) ඔයාට අවශ්‍ය නිශ්චිත තොරතුරු කෑලි විතරක් (URLs, dates, නම් වගේ) ඇදලා ගන්න පුළුවන්. 📊
  4. Text වෙනස් කිරීම (Text Manipulation): Pattern එකකට ගැලපෙන text හොයලා, ඒව replace කරන්න, reformat කරන්න පුළුවන් (උදා: Date format එකක් වෙනස් කරන එක). ✍️
  5. කාර්යක්ෂමතාව (Efficiency): Regex වලින් කරන ගොඩක් දේවල් manual code ලියලා කරන්න ගියොත් ගොඩක් වෙලා යනවා, code එකත් complex වෙනවා. Regex pattern එකකින් ඒක ඉක්මනට, code lines අඩු ගානකින් කරන්න පුළුවන්. ⚡
  6. පුළුල් සහයෝගය (Widely Supported): Python, JavaScript, Java, PHP, Ruby, C# වගේ ගොඩක් programming languages වල, VS Code, Sublime Text වගේ text editors වල, grep, sed වගේ command-line tools වල, databases වල Regex support කරනවා. ඒ නිසා එක තැනකදි ඉගෙනගත්තම ගොඩක් තැන්වල යොදාගන්න පුළුවන්. 🌐


Regex වල මූලික Building Blocks 🧱🏗️

Regex pattern එකක් හැදෙන්නෙ සාමාන්‍ය අකුරු සහ විශේෂ අර්ථ තියෙන අක්ෂර (Metacharacters) එකතුවෙලා. අපි වැදගත්ම ටික සරලව බලමු:

  • Literals (සාමාන්‍ය අකුරු): ඔයා cat කියලා Regex එකක් ලිව්වොත්, ඒක හරියටම "cat" කියන අකුරු තුන තියෙන තැන් හොයනවා. 🐈
  • Metacharacters (විශේෂ අක්ෂර): මේවට විශේෂ තේරුම් තියෙනවා.
  • . (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 කරගන්නත් මේක පාවිච්චි වෙනවා.


  • Special Sequences (විශේෂ අනුක්‍රම - \ එක්ක):
  • \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 උදාහරණ කීපයක් 🧩

  • "apple" කියන සම්පූර්ණ වචනෙ හොයන්න: \bapple\b
  • ඉලක්කම් එකක් හෝ කිහිපයක් හොයන්න: \d+
  • Email address එකක සරල format එකක් (සම්පූර්ණ නෑ!): \w+@\w+\.\w+ (සැබෑ email validation මීට වඩා ගොඩක් සංකීර්ණයි!)
  • ශ්‍රී ලංකාවේ Mobile Number එකක format එකක් (උදාහරණයක්): ^(?:\+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 තියෙනවා:

  • Online Testers: regex101.com සහ regexr.com කියන්නෙ පට්ටම sites දෙකක්. ඔයාට pattern එක type කරලා, test string එකක් දීලා, ඒක match වෙනවද, කොහොමද match වෙන්නෙ කියලා live බලාගන්න පුළුවන්. මේවා ඉගෙනගන්න අනිවාර්යයෙන්ම පාවිච්චි කරන්න! 🌐
  • Programming Languages: හැම ප්‍රධාන භාෂාවකම වගේ Regex library තියෙනවා (Python වල re module එක, JavaScript වල RegExp object එක).
  • Text Editors: VS Code, Sublime Text, Notepad++ වගේ editors වල Regex support කරන Find & Replace තියෙනවා.
  • Command Line: Linux/Mac වල grep, sed, awk වගේ tools Regex එක්ක පාවිච්චි කරන්න පුළුවන්.


Regex ඉගෙනගන්න Tips ටිකක් ✨

  1. සරලව පටන් ගන්න: එකපාර ඔක්කොම ගිලින්න යන්න එපා. . * + ? [] වගේ මූලිකම ටිකෙන් පටන් ගන්න.
  2. Online Testers පාවිච්චි කරන්න: හිතේ තියෙන pattern එකක් type කරලා, test කරලා බලන්න. වැරදුනාම ඒකෙ explanation එකත් ගොඩක් වෙලාවට ඒ sites වල තියෙනවා. Interactive විදියට ඉගෙනගන්න එක ලේසියි.
  3. ප්‍රශ්නෙ කඩන්න: ලොකු, complex pattern එකක් ඕන උනාම, ඒක පොඩි කෑලි වලට කඩලා, එකින් එක හදලා, පස්සෙ එකතු කරන්න.
  4. අනිත් අයගෙ Regex බලන්න: Stack Overflow වගේ තැන්වල තියෙන Regex examples බලන්න. හැබැයි copy-paste කරන්න කලින් ඒක හරියටම වැඩ කරන්නෙ කොහොමද කියලා තේරුම් ගන්න. (සමහර ඒවා ඕනවට වඩා complex!).
  5. Practice! Practice! Practice!: පොඩි පොඩි pattern matching ප්‍රශ්න (උදා: මේ text එකෙන් dates ටික හොයන්න, මේකෙන් phone numbers ටික හොයන්න වගේ) හදලා practice කරන්න.


අවසාන වශයෙන්... 🏁

Regex කියන්නෙ මුලදි ටිකක් බය හිතෙන, ඉගෙනගන්න පොඩි effort එකක් දාන්න ඕන දෙයක් තමයි. ඒත් ඒ effort එක දැම්මට පස්සෙ ඔයාට ලැබෙන බලය 💪, කාලය ඉතුරු වෙන විදිය ⏱️ එක්ක බලද්දි ඒක අනිවාර්යයෙන්ම වටිනවා! Text එක්ක වැඩ කරන ඕනම කෙනෙක්ට Regex කියන්නෙ අත්‍යවශ්‍ය කුසලතාවයක්.

බය නැතුව පොඩ්ඩක් online tool එකක් අරන් experiment කරලා බලන්න. ඔයාටම තේරෙයි ඒකෙ තියෙන ආතල් එක! 😉 Happy Regexing! 🚀


Rasanjana

Rasanjana

Member since 2025-04-09 13:55:06

Comments

Please login to post a comment.

No comments yet. Be the first to comment!