লুয়া (Lua) ভাষায় স্ট্রিং প্যাটার্নস এবং প্যাটার্ন ম্যাচিং (Pattern Matching) খুবই শক্তিশালী এবং নমনীয় ফিচার। এই ফিচারের মাধ্যমে আপনি স্ট্রিংয়ের মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে বের করতে, স্ট্রিং রূপান্তর করতে এবং স্ট্রিং-এর সাথে সম্পর্কিত কাজগুলো সহজে করতে পারেন। লুয়া ভাষায় string.match এবং string.gmatch এর মতো ফাংশন দিয়ে স্ট্রিং প্যাটার্নস ব্যবহার করা হয়।
১. স্ট্রিং প্যাটার্নস (String Patterns)
স্ট্রিং প্যাটার্নস হল একটি বিশেষ সিনট্যাক্স যা স্ট্রিংয়ে নির্দিষ্ট কিছু তথ্য বা উপাদান খুঁজে বের করতে ব্যবহৃত হয়। এটি সাধারণত স্ট্রিংয়ে নির্দিষ্ট চরিত্র, শব্দ বা অক্ষর সিকোয়েন্সের অনুসন্ধান এবং মিলান করতে সাহায্য করে।
স্ট্রিং প্যাটার্নের মৌলিক উপাদান
%a: একটি অক্ষর (A-Z, a-z)%d: একটি ডিজিট (0-9)%s: একটি সাদা স্থান (space, tab, newline)%w: একটি alphanumeric অক্ষর (A-Z, a-z, 0-9)%p: একটি পাংচুয়েশন চিহ্ন (.,!?; etc.)%l: একটি ছোট অক্ষর (a-z)%u: একটি বড় অক্ষর (A-Z)%x: একটি হেক্সাডেসিমাল ডিজিট (0-9, A-F)
এছাড়া, আপনি প্যাটার্নের মধ্যে [], (), *, +, - প্রভৃতি ব্যবহার করতে পারেন স্ট্রিং মিলানোর শর্ত আরও কঠিন বা নমনীয় করার জন্য।
২. প্যাটার্ন ম্যাচিং (Pattern Matching)
লুয়া ভাষায় প্যাটার্ন ম্যাচিং স্ট্রিংয়ের মধ্যে নির্দিষ্ট প্যাটার্ন অনুসন্ধান করার জন্য ব্যবহৃত হয়। স্ট্রিং প্যাটার্নগুলো ব্যবহার করে আপনি স্ট্রিংয়ের মধ্যে নির্দিষ্ট তথ্য খুঁজে বের করতে পারেন।
২.১. string.match ফাংশন
string.match ফাংশনটি একটি স্ট্রিংয়ের মধ্যে প্যাটার্ন ম্যাচ করে প্রথম মিল পাওয়া অংশটি রিটার্ন করে।
উদাহরণ:
local str = "Hello, world!"
local result = string.match(str, "Hello")
print(result) -- আউটপুট: Helloএখানে, string.match "Hello" প্যাটার্নটি স্ট্রিং str এর মধ্যে অনুসন্ধান করছে এবং প্রথম মিল পাওয়া অংশ (যা "Hello") রিটার্ন করছে।
২.২. string.gmatch ফাংশন
string.gmatch ফাংশনটি প্যাটার্নের সাথে মিলে যাওয়ার প্রতিটি অংশ খুঁজে বের করে এবং তা রিটার্ন করে। এটি একটি iterator প্রদান করে, যার মাধ্যমে আপনি একাধিক ম্যাচগুলি একে একে সংগ্রহ করতে পারেন।
উদাহরণ:
local str = "apple, banana, cherry"
for fruit in string.gmatch(str, "%a+") do
print(fruit)
endএখানে, %a+ প্যাটার্নটি স্ট্রিংয়ের মধ্যে যেকোনো আলফাবেটিক শব্দ খুঁজে বের করবে। এই উদাহরণে আউটপুট হবে:
apple
banana
cherry২.৩. string.find ফাংশন
string.find ফাংশনটি একটি প্যাটার্নের অবস্থান এবং দৈর্ঘ্য রিটার্ন করে।
উদাহরণ:
local str = "Hello, world!"
local start_pos, end_pos = string.find(str, "world")
print(start_pos, end_pos) -- আউটপুট: 8 12এখানে, string.find "world" প্যাটার্নটি খুঁজে বের করেছে এবং এর স্টার্ট এবং এন্ড পজিশন রিটার্ন করেছে, যা যথাক্রমে 8 এবং 12।
২.৪. string.sub ফাংশন
string.sub ফাংশনটি স্ট্রিংয়ের একটি অংশ কাটে এবং রিটার্ন করে। এটি সাধারণত প্যাটার্ন ম্যাচিংয়ের পর যেকোনো অংশ সংগ্রহ করতে ব্যবহৃত হয়।
উদাহরণ:
local str = "Hello, world!"
local sub_str = string.sub(str, 1, 5)
print(sub_str) -- আউটপুট: Helloএখানে, string.sub প্রথম ৫টি চরিত্র (অর্থাৎ "Hello") সংগ্রহ করেছে।
৩. প্যাটার্ন ম্যাচিং এর কিছু গুরুত্বপূর্ণ উদাহরণ
৩.১. সিম্পল প্যাটার্ন
local str = "My age is 25"
local result = string.match(str, "%d+") -- প্রথম ডিজিট খুঁজে বের করবে
print(result) -- আউটপুট: 25এখানে, %d+ প্যাটার্নটি স্ট্রিংয়ের মধ্যে ডিজিটগুলিকে খুঁজে বের করবে এবং প্রথম ম্যাচ (25) রিটার্ন করবে।
৩.২. স্ট্রিংয়ের মধ্যে আলফাবেটিক শব্দ খোঁজা
local str = "I love Lua programming"
local word = string.match(str, "%a+")
print(word) -- আউটপুট: Iএখানে, %a+ প্যাটার্নটি প্রথম আলফাবেটিক শব্দ (এখানে "I") রিটার্ন করবে।
৩.৩. সঠিক ফর্ম্যাটে ইমেইল যাচাই
local email = "user@example.com"
local result = string.match(email, "([%w%.%-]+)@([%w%-]+)%.([%a]+)")
print(result) -- আউটপুট: user@example.comএখানে, প্যাটার্নটি একটি সঠিক ইমেইল ঠিকানা যাচাই করছে।
সারসংক্ষেপ
লুয়া ভাষায় স্ট্রিং প্যাটার্নস এবং প্যাটার্ন ম্যাচিং একটি অত্যন্ত শক্তিশালী ফিচার, যা স্ট্রিংয়ের মধ্যে নির্দিষ্ট তথ্য বা উপাদান খুঁজে বের করতে, স্ট্রিং রূপান্তর করতে এবং স্ট্রিং সম্পর্কিত কাজগুলো সহজে করতে সাহায্য করে।
string.match: একটি প্যাটার্নের প্রথম ম্যাচ খুঁজে বের করে।string.gmatch: একাধিক প্যাটার্ন ম্যাচ খুঁজে বের করে।string.find: প্যাটার্নের অবস্থান খুঁজে বের করে।string.sub: স্ট্রিংয়ের একটি অংশ কাটে।
এই প্যাটার্ন ম্যাচিং ফাংশনগুলো ব্যবহার করে আপনি আপনার স্ট্রিংয়ের উপাদানগুলোর সাথে অত্যন্ত নমনীয়ভাবে কাজ করতে পারবেন।
Read more