C# में नियमित अभिव्यक्तियाँ उदाहरण सहित: व्यवहार में
\n\nनियमित अभिव्यक्तियाँ (regex) पैटर्न के आधार पर टेक्स्ट खोजने, सत्यापित करने और बदलने के लिए एक शक्तिशाली उपकरण हैं। C# (.NET) में इनके साथ काम System.Text.RegularExpressions.Regex वर्ग के माध्यम से कार्यान्वित किया जाता है। इस लेख में हम वास्तविक उदाहरणों पर मुख्य क्षमताओं का विश्लेषण करेंगे: सरल ईमेल सत्यापन से लेकर HTML से डेटा निष्कर्षण तक। सभी उदाहरण आपके प्रोजेक्ट में कॉपी और उपयोग के लिए तैयार हैं।
C# में Regex के साथ काम करने की मूल बातें
\n\nRegex वर्ग तीन प्रमुख विधियाँ प्रदान करता है:
- \n
- IsMatch — जाँचता है कि स्ट्रिंग पैटर्न से मेल खाती है या नहीं; \n
- Match — पहला मिलान ढूँढता है; \n
- Matches — सभी मिलान ढूँढता है। \n
एक सरल उदाहरण — जाँचना कि स्ट्रिंग में अंक हैं या नहीं:
\n\nusing System;\nusing System.Text.RegularExpressions;\n\npublic class RegexExample\n{\n public static void Main()\n {\n string text = "मेरा नंबर: 12345";\n string pattern = @"\\d+"; // एक या अधिक अंक\n\n bool hasDigits = Regex.IsMatch(text, pattern);\n Console.WriteLine(hasDigits); // True\n }\n}\n\n\nस्ट्रिंग से पहले @ पर ध्यान दें — यह verbatim string literal है, जो बैकस्लैश के एस्केपिंग को अक्षम करता है। इसके बिना आपको "\\\\d+" लिखना होगा।
ईमेल और फ़ोन नंबर की जाँच
\n\nईमेल सत्यापन
\nईमेल सत्यापन एक क्लासिक कार्य है। एक सरल लेकिन काम करने वाला पैटर्न:
\n\npublic static bool IsValidEmail(string email)\n{\n string pattern = @"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";\n return Regex.IsMatch(email, pattern);\n}\n\n// उपयोग\nConsole.WriteLine(IsValidEmail("user@example.com")); // True\nConsole.WriteLine(IsValidEmail("user@.com")); // False\n\n\nपैटर्न का विश्लेषण:
\n- \n
^— स्ट्रिंग की शुरुआत; \n [a-zA-Z0-9._%+-]+— स्थानीय भाग (अक्षर, अंक और विशेष वर्ण); \n @— "एट" चिह्न; \n [a-zA-Z0-9.-]+— डोमेन; \n \\.— बिंदु (एस्केप किया गया); \n [a-zA-Z]{2,}— डोमेन ज़ोन (कम से कम 2 अक्षर); \n $— स्ट्रिंग का अंत। \n
फ़ोन नंबर की जाँच
\nरूसी प्रारूप (+7 XXX XXX-XX-XX) के लिए उदाहरण:
\n\npublic static bool IsValidRussianPhone(string phone)\n{\n string pattern = @"^\\+7\\d{3}\\d{3}-\\d{2}-\\d{2}$";\n // या अधिक लचीला विकल्प:\n // @"^\\+7[\\s-]?\\d{3}[\\s-]?\\d{3}[\\s-]?\\d{2}[\\s-]?\\d{2}$"\n return Regex.IsMatch(phone, pattern);\n}\n\n\nकैप्चर समूहों के साथ टेक्स्ट से डेटा निकालना
\n\nकैप्चर समूह (कोष्ठक ()) मिलान के भागों को निकालने की अनुमति देते हैं। उदाहरण के लिए, टेक्स्ट से सभी ईमेल निकालें:
string text = "संपर्क: support@site.com, admin@test.org, info@company.net";\nstring pattern = @"([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+)\\.([a-zA-Z]{2,})";\n\nMatchCollection matches = Regex.Matches(text, pattern);\nforeach (Match match in matches)\n{\n Console.WriteLine($"पूरा ईमेल: {match.Value}");\n Console.WriteLine($"स्थानीय भाग: {match.Groups[1].Value}");\n Console.WriteLine($"डोमेन: {match.Groups[2].Value}");\n Console.WriteLine($"ज़ोन: {match.Groups[3].Value}");\n Console.WriteLine("---");\n}\n\n\nपरिणाम:
\nपूरा ईमेल: support@site.com\nस्थानीय भाग: support\nडोमेन: site\nज़ोन: com\n---\n\nसमूह 1 से शुरू होते हैं (समूह 0 पूरा मिलान है)। आप उन्हें नाम दे सकते हैं:
\n\nstring pattern = @"(?<user>[a-zA-Z0-9._%+-]+)@(?<domain>[a-zA-Z0-9.-]+)\\.(?<tld>[a-zA-Z]{2,})";\n// पहुँच: match.Groups["user"].Value\n\n\nHTML से लिंक निकालना
\n\nstring html = @"<a href='https://example.com'>Examp