C++ में रेगुलर एक्सप्रेशन उदाहरणों के साथ: व्यावहारिक मार्गदर्शिका

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

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

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

C++ में रेगुलर एक्सप्रेशन उदाहरणों के साथ: बुनियादी से अभ्यास तक

\n\n

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

\n\n

1. std::regex की मूल बातें: निर्माण और सरल खोज

\n\n

C++ में रेगुलर एक्सप्रेशन के साथ काम करने के लिए तीन मुख्य वर्गों का उपयोग किया जाता है: std::regex (पैटर्न), std::smatch (स्ट्रिंग के लिए परिणाम) और std::sregex_iterator (एकाधिक मिलान के लिए इटरेटर)।

\n\n

उदाहरण 1: पैटर्न के साथ स्ट्रिंग के मिलान की जाँच

\n
#include <iostream>\n#include <regex>\n#include <string>\n\nint main() {\n    std::string email = "user@example.com";\n    // ईमेल जाँच के लिए पैटर्न (सरलीकृत)\n    std::regex pattern(R"([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})");\n    \n    if (std::regex_match(email, pattern)) {\n        std::cout << "ईमेल सही है!" << std::endl;\n    } else {\n        std::cout << "ईमेल प्रारूप से मेल नहीं खाता।" << std::endl;\n    }\n    return 0;\n}
\n\n

फ़ंक्शन std::regex_match जाँचता है कि पूरी स्ट्रिंग पूरी तरह से पैटर्न से मेल खाती है या नहीं। R"(...)" के उपयोग पर ध्यान दें - यह एक raw string literal है, जो बैकस्लैश को एस्केप करने की आवश्यकता को समाप्त करता है।

\n\n

उदाहरण 2: सबस्ट्रिंग खोजना

\n
#include <iostream>\n#include <regex>\n#include <string>\n\nint main() {\n    std::string text = "मेरा नंबर: +7 (123) 456-78-90। मुझे कॉल करें!";\n    std::regex phone_pattern(R"(\\+7\\s?\\(\\d{3}\\)\\s?\\d{3}-\\d{2}-\\d{2})");\n    std::smatch match;\n    \n    if (std::regex_search(text, match, phone_pattern)) {\n        std::cout << "नंबर मिला: " << match.str() << std::endl;\n        std::cout << "स्थिति: " << match.position() << std::endl;\n    } else {\n        std::cout << "नंबर नहीं मिला।" << std::endl;\n    }\n    return 0;\n}
\n\n

std::regex_search स्ट्रिंग में पैटर्न का पहला मिलान ढूंढता है। परिणाम std::smatch ऑब्जेक्ट में संग्रहीत किया जाता है, जिससे मिली हुई सबस्ट्रिंग और उसकी स्थिति निकाली जा सकती है।

\n\n

2. कैप्चरिंग ग्रुप्स की मदद से डेटा निकालना

\n\n

ग्रुप्स मिलान के अलग-अलग हिस्सों को निकालने की अनुमति देते हैं। उन्हें गोल कोष्ठक () से दर्शाया जाता है।

\n\n

उदाहरण 3: तिथि पार्स करना

\n
#include <iostream>\n#include <regex>\n#include <string>\n\nint main() {\n    std::string date = "आज 15.04.2025";\n    std::regex date_pattern(R"((\\d{2})\\.(\\d{2})\\.(\\d{4}))");\n    std::smatch match;\n    \n    if (std::regex_search(date, match, date_pattern)) {\n        std::cout << "पूर्ण तिथि: " << match[0] << std::endl;\n        std::cout << "दिन: " << match[1] << std::endl;\n        std::cout << "महीना: " << match[2] << std::endl;\n        std::cout << "वर्ष: " << match[3] << std::endl;\n    }\n    return 0;\n}
\n\n

उदाहरण 4: इटरेटर का उपयोग करके सभी मिलान निकालना

\n
#include <iostream>\n#include <regex>\n#include <string>\n\nint main() {\n    std::string log = "ERROR: फ़ाइल नहीं मिली\\nWARNING: बैटरी कम है\\nINFO: ऑपरेशन पूर्ण हुआ\\nERROR: कनेक्शन टाइमआउट";\n    std::regex error_pattern(R"(^ERROR:\\s*(.+)$)");\n    \n    // सभी पंक्तियों को पार करने के लिए std::sregex_iterator का उपयोग करें\n    auto words_begin = std::sregex_iterator(log.begin(), log.end(), error_pattern);\n    auto words_end = std::sregex_iterator();\n    \n    std::cout << "मिले                

ब्लॉग

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