রেগুলার এক্সপ্রেশন ব্যবহার করা

C++:
রেগুলার এক্সপ্রেশন ব্যবহার করা

কিভাবে:

C++11 স্ট্যান্ডার্ড লাইব্রেরিতে <regex> এর মাধ্যমে নিয়মিত অভিব্যক্তির জন্য সমর্থন চালু করেছে, যা স্ট্রিং অনুসন্ধান এবং ম্যানিপুলেশনের জন্য একটি দৃঢ় কাঠামো প্রদান করে। এখানে একটি মৌলিক উদাহরণ দেওয়া হল, যেখানে স্ট্রিং এর মধ্যে একটি প্যাটার্নের জন্য নিয়মিত অভিব্যক্তি ব্যবহার করে অনুসন্ধান করা হয়:

#include <iostream>
#include <regex>

int main() {
    std::string target = "Hello, my email is [email protected]";
    std::regex email_pattern(R"(\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b)");

    if (std::regex_search(target, email_pattern)) {
        std::cout << "ইমেইল পাওয়া গেছে!" << std::endl;
    } else {
        std::cout << "কোনো ইমেইল পাওয়া যায়নি।" << std::endl;
    }

    return 0;
}

নমুনা আউটপুট

ইমেইল পাওয়া গেছে!

স্ট্রিংগুলিতে প্যাটার্ন প্রতিস্থাপনের মতো জটিল ম্যানিপুলেশনগুলির জন্য, C++ এর নিয়মিত অভিব্যক্তিগুলি খুবই কার্যকর:

#include <iostream>
#include <regex>

int main() {
    std::string text = "The rain in Spain falls mainly in the plain.";
    std::regex vowel_regex("([aeiou])");

    std::string replaced_text = std::regex_replace(text, vowel_regex, "*");
    std::cout << replaced_text << std::endl;

    return 0;
}

নমুনা আউটপুট

Th* r**n *n Sp**n f*lls m**nly *n th* pl**n.

স্ট্যান্ডার্ড লাইব্রেরির বাইরে প্রোগ্রামারদের অন্বেষণের জন্য, Boost Regex লাইব্রেরি (boost/regex.hpp) জটিল প্যাটার্নগুলি বা ব্যাপক ডেটা প্রসেসিংয়ের জন্য উন্নত রেগেক্স ক্ষমতা এবং কর্মক্ষমতা অপ্টিমাইজেশন প্রদান করে একটি জনপ্রিয় তৃতীয়-পক্ষের বিকল্প:

#include <iostream>
#include <boost/regex.hpp>

int main() {
    std::string s = "Boost libraries are fun!";
    boost::regex expr("(\\w+)\\s(libraries)"); // "Boost libraries" মিল করে
    std::string fmt("GNU \\1"); // "GNU Boost" এর সাথে প্রতিস্থাপন করে

    std::string result = boost::regex_replace(s, expr, fmt);
    std::cout << result << std::endl;

    return 0;
}

নমুনা আউটপুট

GNU Boost মজাদার!

এই উদাহরণগুলি C++ এর সাথে নিয়মিত অভিব্যক্তির সামর্থ্যগুলির উপরিভাগে একটি স্ক্র্যাচ প্রদান করে, যা মৌলিক অনুসন্ধান, প্যাটার্ন মিল, এবং প্রতিস্থাপনগুলি নির্দেশ করে, যা হয় স্ট্যান্ডার্ড লাইব্রেরি ব্যবহার করে, অথবা Boost এর শক্তিশালী রেগেক্স বাস্তবায়ন দ্বারা উন্নত।