std::regex এবং এর ফাংশনসমূহ

Regular Expressions (রেগুলার এক্সপ্রেশন) - সি++ স্ট্যান্ডার্ড লাইব্রেরি (C++ Standard Library) - Computer Programming

352

C++11-এ std::regex লাইব্রেরি অন্তর্ভুক্ত করা হয়েছে, যা রেগুলার এক্সপ্রেশন (Regular Expressions) ব্যবহার করে টেক্সট ম্যানিপুলেশন এবং প্যাটার্ন মেচিংয়ের জন্য ব্যবহৃত হয়। std::regex একটি সিস্টেম্যাটিক এবং কার্যকরী উপায় সরবরাহ করে, যার মাধ্যমে আপনি টেক্সট অনুসন্ধান, প্রতিস্থাপন, ভাগ করা, বা যাচাইকরণের মতো কাজগুলো খুব সহজে করতে পারেন।

std::regex এবং তার সম্পর্কিত ফাংশনগুলির মাধ্যমে আপনি কোনো টেক্সটের মধ্যে একটি নির্দিষ্ট প্যাটার্ন খুঁজে বের করতে পারেন, প্যাটার্নের সাথে মিলে এমন উপাদানগুলি বের করতে পারেন, এবং তাদের উপর বিভিন্ন কাজ (যেমন রিপ্লেসমেন্ট) করতে পারেন।

১. std::regex এর মৌলিক উপাদান

std::regex দুটি প্রধান অংশে বিভক্ত:

  1. Regex Object (std::regex): এটি একটি রেগুলার এক্সপ্রেশন স্টোর করে, যা প্যাটার্নকে প্রকাশ করে।
  2. Regex Match (std::smatch অথবা std::cmatch): এটি একটি ম্যাচের ফলাফল ধারণ করে, যেখানে আপনি প্যাটার্নের সাথে মিলিত অংশগুলি খুঁজে পাবেন।

২. std::regex এর ফাংশনসমূহ

C++ এর <regex> হেডার ফাইলের অন্তর্গত কিছু গুরুত্বপূর্ণ ফাংশন এবং তাদের ব্যবহার নিচে আলোচনা করা হলো।


১. std::regex_match()

এই ফাংশনটি একটি স্ট্রিংয়ের সাথে সম্পূর্ণ রেগুলার এক্সপ্রেশন মিলিয়ে দেখবে। এটি চেক করে যে স্ট্রিংটি সম্পূর্ণভাবে নির্দিষ্ট প্যাটার্নের সাথে মেলে কিনা।

Syntax:

bool std::regex_match(const std::string& str, const std::regex& rgx);
  • str: যে স্ট্রিংটির সাথে প্যাটার্ন মিলাতে হবে।
  • rgx: রেগুলার এক্সপ্রেশন।

উদাহরণ:

#include <iostream>
#include <regex>

int main() {
    std::regex pattern("^[a-zA-Z]+$");  // শুধুমাত্র অক্ষর

    std::string text = "HelloWorld";

    if (std::regex_match(text, pattern)) {
        std::cout << "Match found!" << std::endl;
    } else {
        std::cout << "No match found!" << std::endl;
    }

    return 0;
}

আউটপুট:

Match found!

এখানে, std::regex_match() ফাংশনটি পুরো স্ট্রিংটি প্যাটার্নের সাথে মিলিয়ে দেখছে। যদি পুরো স্ট্রিং প্যাটার্নের সাথে মিলে, তবে এটি true রিটার্ন করবে।


২. std::regex_search()

এই ফাংশনটি স্ট্রিংয়ের মধ্যে প্যাটার্ন খুঁজে বের করবে, কিন্তু পুরো স্ট্রিংটি পুরোপুরি মেলানোর প্রয়োজন নেই। এটি প্রথম মিলে যাওয়া প্যাটার্নটি খুঁজে বের করে।

Syntax:

bool std::regex_search(const std::string& str, const std::regex& rgx);
  • str: যে স্ট্রিংটি খুঁজতে হবে।
  • rgx: রেগুলার এক্সপ্রেশন।

উদাহরণ:

#include <iostream>
#include <regex>

int main() {
    std::regex pattern("World");

    std::string text = "HelloWorld";

    if (std::regex_search(text, pattern)) {
        std::cout << "Match found!" << std::endl;
    } else {
        std::cout << "No match found!" << std::endl;
    }

    return 0;
}

আউটপুট:

Match found!

এখানে, std::regex_search() ফাংশনটি স্ট্রিংয়ের মধ্যে "World" প্যাটার্নটি খুঁজে বের করেছে।


৩. std::regex_replace()

এই ফাংশনটি একটি স্ট্রিংয়ের মধ্যে রেগুলার এক্সপ্রেশন দ্বারা চিহ্নিত অংশগুলিকে নতুন কিছু দ্বারা প্রতিস্থাপন করতে ব্যবহৃত হয়।

Syntax:

std::string std::regex_replace(const std::string& str, const std::regex& rgx, const std::string& fmt);
  • str: যে স্ট্রিংটি প্রতিস্থাপন করতে হবে।
  • rgx: রেগুলার এক্সপ্রেশন।
  • fmt: নতুন টেক্সট যা পুরানো অংশকে প্রতিস্থাপন করবে।

উদাহরণ:

#include <iostream>
#include <regex>

int main() {
    std::regex pattern("world");

    std::string text = "Hello world";

    // "world" কে "C++" দিয়ে প্রতিস্থাপন করা
    std::string newText = std::regex_replace(text, pattern, "C++");

    std::cout << newText << std::endl;  // "Hello C++"

    return 0;
}

আউটপুট:

Hello C++

এখানে, std::regex_replace() "world" কে "C++" দিয়ে প্রতিস্থাপন করেছে।


৪. std::regex_token_iterator

এই ইটরেটরটি রেগুলার এক্সপ্রেশন ব্যবহার করে একটি স্ট্রিংকে ভাঙতে (tokenize) পারে, যেখানে আপনি সেগুলির প্রতিটি অংশ পৃথকভাবে অ্যাক্সেস করতে পারবেন।

Syntax:

std::regex_token_iterator<std::string::iterator> it(begin, end, rgx);
  • begin: স্ট্রিংয়ের শুরু।
  • end: স্ট্রিংয়ের শেষ।
  • rgx: রেগুলার এক্সপ্রেশন।

উদাহরণ:

#include <iostream>
#include <regex>

int main() {
    std::string text = "apple,banana,orange";
    std::regex pattern(",");

    // টোকেনাইজিং করা
    std::sregex_token_iterator it(text.begin(), text.end(), pattern, -1);
    std::sregex_token_iterator end;

    // প্রতিটি টোকেন প্রিন্ট করা
    while (it != end) {
        std::cout << *it << std::endl;
        ++it;
    }

    return 0;
}

আউটপুট:

apple
banana
orange

এখানে, আমরা std::regex_token_iterator ব্যবহার করে কমা (,) দ্বারা পৃথক করা টোকেনগুলিকে আলাদা করেছি এবং প্রিন্ট করেছি।


৫. std::regex_error

এটি একটি এক্সসেপশন ক্লাস যা রেগুলার এক্সপ্রেশন সম্পর্কিত ত্রুটি নির্দেশ করে। এটি সাধারণত তখন ব্যবহৃত হয় যখন একটি অবৈধ রেগুলার এক্সপ্রেশন তৈরি করার চেষ্টা করা হয়।

Syntax:

std::regex_error(std::regex_constants::error_type ec);
  • ec: ত্রুটির ধরন (যেমন error_bad_escape, error_bracketing, ইত্যাদি)।

উপসংহার

C++ এর std::regex লাইব্রেরি রেগুলার এক্সপ্রেশন নিয়ে কাজ করার জন্য একটি শক্তিশালী টুল। এর মাধ্যমে আপনি সহজেই টেক্সট অনুসন্ধান, ম্যানিপুলেশন, রিপ্লেসমেন্ট, এবং টোকেনাইজিং করতে পারবেন। এর কিছু গুরুত্বপূর্ণ ফাংশন:

  • std::regex_match(): পুরো স্ট্রিংয়ের সাথে প্যাটার্ন মেলানো।
  • std::regex_search(): স্ট্রিংয়ের মধ্যে প্যাটার্ন খুঁজে বের করা।
  • std::regex_replace(): প্যাটার্নের সাথে মিলিত অংশগুলি প্রতিস্থাপন করা।
  • std::regex_token_iterator: স্ট্রিংকে টোকেনাইজ করা।

std::regex লাইব্রেরি ব্যবহার করে আপনি ডেটা যাচাইকরণ, ফরম্যাটিং, অথবা অন্য কোনো টেক্সট ম্যানিপুলেশন কার্য সহজেই সম্পন্ন করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...