Go:
রেগুলার এক্সপ্রেশন ব্যবহার করা
কিভাবে:
গো ভাষায়, regexp
প্যাকেজ রেগেক্স ফাংশনালিটি প্রদান করে। এই ব্যবহারের ধাপে ধাপে গাইড দেওয়া হল:
১. একটি নিয়মিত অভিব্যক্তি কম্পাইল করা
প্রথমে, regexp.Compile
ব্যবহার করে আপনার regex প্যাটার্নটি কম্পাইল করুন। কম্পাইলের সময় যে কোন এরর হ্যান্ডল করা ভালো অভ্যাস।
package main
import (
"fmt"
"regexp"
)
func main() {
pattern := "go+"
r, err := regexp.Compile(pattern)
if err != nil {
fmt.Println("Regex কম্পাইলে এরর:", err)
return
}
fmt.Println("Regex সফলভাবে কম্পাইল হয়েছে")
}
২. স্ট্রিং মিলানো
MatchString
মেথড ব্যবহার করে একটি স্ট্রিং প্যাটার্নের সাথে মিলে কিনা তা চেক করুন।
matched := r.MatchString("goooooogle")
fmt.Println("মিলেছে:", matched) // আউটপুট: মিলেছে: true
৩. মিলের অনুসন্ধান
একটি স্ট্রিংয়ে প্রথম মিলটি খুঁজে পাওয়ার জন্য FindString
মেথড ব্যবহার করুন।
match := r.FindString("golang gooooo")
fmt.Println("পাওয়া গেছে:", match) // আউটপুট: পাওয়া গেছে: gooooo
৪. সকল মিল খুঁজে পাওয়া
সকল মিল খুঁজে পেতে, FindAllString
একটি ইনপুট স্ট্রিং এবং একটি পূর্ণসংখ্যা n নেয়। যদি n >= ০ হয়, এটি সর্বাধিক n মিল ফেরত দেয়; যদি n < ০ হয়, এটি সকল মিল ফেরত দেয়।
matches := r.FindAllString("go gooo gooooo", -1)
fmt.Println("সকল মিল:", matches) // আউটপুট: সকল মিল: [go gooo gooooo]
৫. মিল প্রতিস্থাপন করা
মিলগুলোকে অন্য একটি স্ট্রিং দিয়ে প্রতিস্থাপন করতে ReplaceAllString
উপকারী।
result := r.ReplaceAllString("go gooo gooooo", "Java")
fmt.Println("প্রতিস্থাপিত:", result) // আউটপুট: প্রতিস্থাপিত: Java Java Java
গভীর ডুব
গো-র স্ট্যান্ডার্ড লাইব্রেরিতে প্রবর্তিত, regexp
প্যাকেজ Perl-এর সিনট্যাক্স অনুপ্রেরণায় নিয়মিত অভিব্যক্তি অনুসন্ধান এবং প্যাটার্ন মিলানো বাস্তবায়ন করে। এর আড়ালে, গো-র রেগেক্স ইঞ্জিন প্যাটার্নগুলি বাইটকোড আকারে কম্পাইল করে, যা গো নিজেই লেখা একটি ম্যাচিং ইঞ্জিন দ্বারা চালিত হয়। এই বাস্তবায়ন সরাসরি হার্ডওয়্যার বাস্তবায়নে পাওয়া কিছু গতির বিনিময়ে নিরাপত্তা এবং ব্যবহারের সহজতাকে প্রাধান্য দেয়, সি-ভিত্তিক লাইব্রেরিগুলিতে সাধারণ বাফার ওভাররানস ঝুঁকিগুলি এড়িয়ে চলে।
এর শক্তি সত্ত্বেও, গো-তে রেগেক্স সবসময় প্যাটার্ন মিলানোর জন্য আদর্শ সমাধান নয়, বিশেষ করে JSON বা XML এর মতো উচ্চ কাঠামোগত ডেটার সাথে কাজ করার ক্ষেত্রে। এই ক্ষেত্রগুলিতে, বিশেষায়িত পার্সার বা এই ডেটা ফরম্যাটের জন্য ডিজাইন করা লাইব্রেরি আরো ভালো পারফরম্যান্স এবং নির্ভরযোগ্যতা প্রদান করে। তবে, পূর্বনির্ধারিত কাঠামো ছাড়া জটিল টেক্সট প্রক্রিয়া সংক্রান্ত কাজের জন্য, রেগেক্স একজন প্রোগ্রামারের টুলকিটে একটি অপরিহার্য সরঞ্জাম হিসেবে থাকে, শক্তি এবং নমনীয়তার এমন এক সমন্বয় প্রদান করে যা খুব কম বিকল্পই মিলাতে পারে।