C++ में नियमित अभिव्यक्तियाँ (Regular Expressions) शुरुआती लोगों के लिए उदाहरण सहित

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C++ में नियमित अभिव्यक्तियाँ उदाहरण सहित: शुरुआती लोगों के लिए पूर्ण गाइड

\n\n

नियमित अभिव्यक्तियाँ (regex) टेक्स्ट को पैटर्न के आधार पर खोजने, जाँचने और बदलने का एक शक्तिशाली उपकरण हैं। C++ में, नियमित अभिव्यक्तियों के साथ काम <regex> लाइब्रेरी के माध्यम से कार्यान्वित किया जाता है, जो C++11 मानक में शामिल हुई थी। इस लेख में, हम व्यावहारिक उदाहरणों के साथ C++ में regex के साथ काम करने की मूल बातें समझेंगे, जो शुरुआती लोगों के लिए भी समझने योग्य हैं।

\n\n

नियमित अभिव्यक्तियाँ क्या हैं और इनकी आवश्यकता क्यों है?

\n\n

नियमित अभिव्यक्ति वर्णों का एक क्रम है जो टेक्स्ट में खोजने के लिए एक पैटर्न निर्दिष्ट करता है। उदाहरण के लिए, पैटर्न \\d{3}-\\d{2}-\\d{2} SNILS नंबर के प्रारूप का वर्णन करता है: तीन अंक, डैश, दो अंक, डैश, दो अंक।

\n\n

C++ में नियमित अभिव्यक्तियाँ निम्नलिखित मुख्य कार्यों को हल करती हैं:

\n\n
    \n
  • इनपुट की सत्यता की जाँच (ईमेल, फ़ोन, दिनांक)
  • \n
  • टेक्स्ट से डेटा निकालना
  • \n
  • सबस्ट्रिंग की खोज और प्रतिस्थापन
  • \n
  • जटिल विभाजकों द्वारा स्ट्रिंग को विभाजित करना
  • \n
\n\n

<regex> लाइब्रेरी तीन मुख्य एल्गोरिदम प्रदान करती है:

\n\n
    \n
  • std::regex_match — पैटर्न के साथ स्ट्रिंग का पूर्ण मिलान
  • \n
  • std::regex_search — स्ट्रिंग में मिलान खोजना
  • \n
  • std::regex_replace — पैटर्न के आधार पर मिलान को बदलना
  • \n
\n\n

C++ में नियमित अभिव्यक्तियों का मूल सिंटैक्स

\n\n

कोड लिखने से पहले, आइए regex सिंटैक्स के मुख्य तत्वों को समझें जो उदाहरणों में काम आएंगे:

\n\n\n \n \n \n \n \n \n \n \n \n \n \n
प्रतीकअर्थउदाहरण
.कोई भी वर्ण (नई पंक्ति को छोड़कर)c.t — cat, cot, cut
\\dअंक (0-9)\\d\\d — 23, 45, 99
\\wअक्षर, अंक या अंडरस्कोर\\w+ — शब्द
\\sरिक्त स्थान वर्ण\\s+ — एक या अधिक रिक्त स्थान
*0 या अधिक पुनरावृत्तियाँab*c — ac, abc, abbc
+1 या अधिक पुनरावृत्तियाँab+c — abc, abbc (ac नहीं)
?0 या 1 पुनरावृत्तिcolou?r — color, colour
{n}ठीक n पुनरावृत्तियाँ\\d{3} — 123, 456
[abc]सेट से कोई भी वर्ण[aeiou] — स्वर
()कैप्चर के लिए समूह(\\d{2})-(\\d{2})
\n\n

उदाहरण 1: regex_match के साथ ईमेल पता जाँचना

\n\n

सरल से शुरू करते हैं — जाँचें कि क्या स्ट्रिंग ईमेल प्रारूप से मेल खाती है। हम std::regex_match का उपयोग करते हैं, जिसके लिए पूर्ण मिलान आवश्यक है।

\n\n
#include <iostream>\n#include <regex>\n#include <string>\n\nint main() {\n    std::string email = "user@example.com";\n    // ईमेल के लिए सरल पैटर्न:\n    // [\\w.]+ — एक या अधिक वर्ण (अक्षर, अंक, बिंदु, अंडरस्कोर)\n    // @ — 'एट' प्रतीक\n    // [\\w.]+ — डोमेन नाम\n    // \\.[a-z]{2,} — बिंदु और शीर्ष-स्तरीय डोमेन (कम से कम 2 अक्षर)\n    std::regex pattern(R"([\\w.]+@[\\w.]+\\.\\w{2,})");\n    \n    if (std::regex_match(email, pattern)) {\n        std::cout << "ईमेल सही है" << std::endl;\n    } else {\n        std::cout << "ईमेल गलत है" << std::endl;\n    }\n    \n    // अमान्य ईमेल के साथ उदाहरण\n    email = "user@com";\n    if (std::regex_match(email, pattern)) {\n        std::cout << "ईमेल सही है" << std::endl;\n    } else {\n        std::cout << "ईमेल गलत है" << std::endl;\n    }\n    \n    return 0;\n}
\n\n

आउटपुट:

\n
ईमेल सही है\nईमेल गलत है
\n\n

ध्यान दें

ब्लॉग

पुस्तक अनुशंसाएँ