Regular Expressions এবং Pattern Matching in Elixir
Elixir তে Regular Expressions (RegEx) এবং Pattern Matching দুটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা ডেটা প্রসেসিং এবং শর্তানুসারে ডেটার সাথে কাজ করার জন্য ব্যবহৃত হয়। তবে, তারা আলাদা উদ্দেশ্যে ব্যবহৃত হলেও, উভয়ের মধ্যে কিছু মিলও রয়েছে। Elixir তে Pattern Matching মূলত কোডের মধ্যে ডেটা মেলানোর কাজ করে, এবং Regular Expressions টেক্সটের মধ্যে প্যাটার্ন খুঁজে বের করতে ব্যবহৃত হয়।
এখানে আমরা Pattern Matching এবং Regular Expressions এর মধ্যে পার্থক্য এবং তাদের ব্যবহার ব্যাখ্যা করবো।
1. Pattern Matching in Elixir
Pattern Matching হল Elixir এর একটি মৌলিক বৈশিষ্ট্য যা কোডের মধ্যে বিভিন্ন ধরণের ডেটা মেলানোর জন্য ব্যবহার করা হয়। এটি ডেটার কাঠামো বা মানের সাথে মেলে এমন অংশগুলিকে পরীক্ষা করে এবং বিভিন্ন কোডের অংশে সেই অংশটি ব্যবহার করা যায়।
Pattern Matching এর মৌলিক ব্যবহার:
- Elixir তে Pattern Matching মূলত ফাংশন, টিউপল, লিস্ট, ম্যাপ, ইত্যাদি ডেটা স্ট্রাকচারের মধ্যে মান খুঁজে বের করতে ব্যবহৃত হয়।
=অপারেটরটি Pattern Matching এর জন্য ব্যবহৃত হয়, যেটি দুটি এক্সপ্রেশনকে মিলিয়ে দেখার জন্য কাজ করে।
Pattern Matching উদাহরণ:
# টিউপল প্যাটার্ন ম্যাচিং
iex> {a, b} = {1, 2}
{1, 2}
iex> a
1
iex> b
2এখানে {a, b} = {1, 2} কোডটি একটি টিউপল মেলাচ্ছে এবং তার পর a এর মান 1 এবং b এর মান 2 হয়ে যাচ্ছে।
লিস্ট প্যাটার্ন ম্যাচিং:
iex> [head | tail] = [1, 2, 3, 4]
[1, 2, 3, 4]
iex> head
1
iex> tail
[2, 3, 4]এখানে, লিস্টের প্রথম উপাদান head এ এবং বাকী উপাদানগুলো tail এ চলে আসছে।
Pattern Matching খুবই শক্তিশালী, এবং এটি কোডের মধ্যে শর্তাবলী নির্ধারণে ব্যবহার করা হয়।
2. Regular Expressions in Elixir
Regular Expressions (RegEx) হল একটি শক্তিশালী টুল যা স্ট্রিং বা টেক্সটের মধ্যে প্যাটার্ন খুঁজে বের করার জন্য ব্যবহৃত হয়। RegEx Elixir তে Regex মডিউল দ্বারা সমর্থিত। এটি টেক্সটের সাথে প্যাটার্ন মেলানো, স্ট্রিং সন্নিবেশ করা, স্ট্রিং রিপ্লেস করা, ইত্যাদি কাজের জন্য ব্যবহার করা হয়।
Elixir তে Regular Expression Syntax:
- Elixir তে RegEx তৈরি করতে
~r//সিম্বল ব্যবহার করা হয়।
RegEx উদাহরণ:
iex> regex = ~r/hello/
~r/hello/
iex> String.match?("hello world", regex)
true
iex> String.match?("hi there", regex)
falseএখানে, ~r/hello/ একটি RegEx প্যাটার্ন তৈরি করেছে, এবং String.match?/2 ফাংশনটি যাচাই করেছে যে "hello world" স্ট্রিংয়ে "hello" প্যাটার্নটি আছে কিনা। এটি প্রথমে true রিটার্ন করেছে এবং পরে "hi there" স্ট্রিংয়ের জন্য false রিটার্ন করেছে কারণ "hello" সেখানে নেই।
Elixir তে RegEx Grouping:
Elixir এ RegEx এর মাধ্যমে গ্রুপ তৈরি করা এবং স্ট্রিং থেকে নির্দিষ্ট অংশ বের করা যায়।
iex> regex = ~r/(hello) (\w+)/
~r/(hello) (\w+)/
iex> Regex.scan(regex, "hello world")
[["hello", "world"]]এখানে, RegEx প্যাটার্নে () ব্যবহার করে দুটি গ্রুপ তৈরি করা হয়েছে: প্রথম গ্রুপ "hello" এবং দ্বিতীয় গ্রুপ "world"। Regex.scan/2 ফাংশনটি এই দুটি অংশ বের করে দিচ্ছে।
Substituting with RegEx:
Elixir তে আপনি Regex.replace/3 ফাংশন ব্যবহার করে RegEx এর মাধ্যমে স্ট্রিং রিপ্লেস করতে পারেন।
iex> regex = ~r/\d+/
~r/\d+/
iex> Regex.replace(regex, "There are 123 apples", "many")
"There are many apples"এখানে, "123" সংখ্যাটিকে "many" দিয়ে রিপ্লেস করা হয়েছে।
3. Pattern Matching vs Regular Expressions
| Aspect | Pattern Matching | Regular Expressions |
|---|---|---|
| Purpose | ম্যানিপুলেট বা পরীক্ষার জন্য ডেটা স্ট্রাকচার (লিস্ট, টিউপল, ম্যাপ) এর সাথে মান মেলানো। | টেক্সট বা স্ট্রিংয়ে প্যাটার্ন খুঁজে বের করা বা রিপ্লেস করা। |
| Data Type | ব্যবহার হয় ডেটা স্ট্রাকচার যেমন লিস্ট, টিউপল, ম্যাপ। | ব্যবহৃত হয় স্ট্রিং বা টেক্সটের সাথে। |
| Syntax | সহজ এবং কোডে কমপ্লেক্স না। | নিয়মিত প্যাটার্ন লিখতে হয় যা কিছুটা জটিল হতে পারে। |
| Flexibility | সীমিত; শুধুমাত্র ডেটা স্ট্রাকচারে ব্যবহৃত হয়। | অত্যন্ত শক্তিশালী; টেক্সট বা স্ট্রিংয়ে নমনীয়তা প্রদান করে। |
| Use Case | ডেটা ম্যানিপুলেশনে (যেমন: লিস্ট, টিউপল)। | টেক্সট খোঁজা, স্ট্রিং এডিটিং এবং ফাইল ম্যানিপুলেশন। |
সারসংক্ষেপ
- Pattern Matching হল Elixir এর একটি মৌলিক বৈশিষ্ট্য যা বিভিন্ন ডেটা স্ট্রাকচারের মধ্যে ডেটার সাথে মেলানোর জন্য ব্যবহার করা হয়। এটি সাধারণত ফাংশনাল প্রোগ্রামিং কোডে শর্তাবলী নির্ধারণে ব্যবহৃত হয়।
- Regular Expressions (RegEx) হল একটি শক্তিশালী টুল যা স্ট্রিং বা টেক্সটের মধ্যে প্যাটার্ন খুঁজে বের করতে ব্যবহৃত হয়। Elixir তে RegEx ব্যবহারের জন্য
Regexমডিউল ব্যবহার করা হয়, যা স্ট্রিং ম্যানিপুলেশনের জন্য খুবই কার্যকরী।
Elixir তে Pattern Matching এবং Regular Expressions দুইটি গুরুত্বপূর্ণ টুল যা ডেটা ম্যানিপুলেশন এবং শর্ত পরীক্ষার ক্ষেত্রে খুবই সহায়ক।
Read more