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

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

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

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

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

\n

नियमित अभिव्यक्तियाँ (regular expressions, regex) किसी दिए गए पैटर्न के अनुसार स्ट्रिंग्स को खोजने, बदलने और जांचने के लिए एक शक्तिशाली उपकरण हैं। C# (.NET) में, नियमित अभिव्यक्तियों के साथ काम System.Text.RegularExpressions नेमस्पेस के माध्यम से कार्यान्वित किया जाता है। यह लेख आपको सबसे सरल पैटर्न बनाने से लेकर Regex क्लास की सभी क्षमताओं का उपयोग करने तक, मूल बातें सीखने में मदद करेगा।

\n\n

1. C# में Regex के साथ काम करने की मूल बातें

\n

शुरू करने के लिए, नेमस्पेस शामिल करें:

\n
using System.Text.RegularExpressions;
\n

Regex क्लास स्टैटिक और इंस्टेंस मेथड प्रदान करता है। यह जांचने का सबसे सरल तरीका है कि क्या किसी स्ट्रिंग में पैटर्न के अनुसार कोई सबस्ट्रिंग है, IsMatch मेथड है:

\n
string text = "नमस्ते, मेरा ईमेल: test@example.com";\nstring pattern = @"\\w+@\\w+\\.\\w+"; // सरल ईमेल पैटर्न\n\nbool hasEmail = Regex.IsMatch(text, pattern);\nConsole.WriteLine(hasEmail); // True
\n

पैटर्न का विश्लेषण:

\n
    \n
  • \\w+ — एक या अधिक अक्षर, अंक या अंडरस्कोर
  • \n
  • @ — "ऐट" चिह्न
  • \n
  • \\. — एस्केप किया गया डॉट (बिना एस्केप के डॉट का अर्थ है "कोई भी वर्ण")
  • \n
\n

बार-बार कॉल करने के लिए, पैटर्न के पुन: संकलन से बचने के लिए Regex ऑब्जेक्ट बनाना बेहतर है:

\n
Regex emailRegex = new Regex(@"\\w+@\\w+\\.\\w+");\nConsole.WriteLine(emailRegex.IsMatch("admin@site.ru")); // True
\n\n

2. सभी मिलान खोजना: Match और MatchCollection

\n

Match मेथड पहला मिलान लौटाता है, जबकि Matches सभी मिलान MatchCollection संग्रह के रूप में लौटाता है। प्रत्येक Match ऑब्जेक्ट में मिली सबस्ट्रिंग, उसकी स्थिति और लंबाई के बारे में जानकारी होती है।

\n

उदाहरण: स्ट्रिंग से सभी संख्याएँ निकालना

\n
string data = "2023 में 15 घटनाएँ हुईं, 2024 में — पहले से 23।";\nstring numberPattern = @"\\d+"; // एक या अधिक अंक\n\nMatchCollection matches = Regex.Matches(data, numberPattern);\n\nforeach (Match match in matches)\n{\n    Console.WriteLine($"मिला: {match.Value} स्थान पर {match.Index}");\n}\n// आउटपुट:\n// मिला: 2023 स्थान पर 0\n// मिला: 15 स्थान पर 8\n// मिला: 2024 स्थान पर 22\n// मिला: 23 स्थान पर 37
\n

समूहों (Group) के साथ काम करना। समूह मिलान के कुछ हिस्सों को निकालने की अनुमति देते हैं। उदाहरण के लिए, "दिन.महीना.वर्ष" प्रारूप में दिनांक खोजते समय, दिन, महीना और वर्ष अलग-अलग प्राप्त किए जा सकते हैं:

\n
string input = "आज 25.12.2024 है";\nstring datePattern = @"(\\d{2})\\.(\\d{2})\\.(\\d{4})";\n\nMatch match = Regex.Match(input, datePattern);\nif (match.Success)\n{\n    Console.WriteLine($"दिन: {match.Groups[1].Value}");   // 25\n    Console.WriteLine($"महीना: {match.Groups[2].Value}");  // 12\n    Console.WriteLine($"वर्ष: {match.Groups[3].Value}");    // 2024\n}
\n

समूहों को 1 से क्रमांकित किया जाता है (समूह 0 पूरा मिलान है)। नामांकित समूह पढ़ने में अधिक सुविधाजनक होते हैं:

\n
string namedPattern = @"(?<day>\\d{2})\\.(?<month>\\d{2})\\.(?<year>\\d{4})";\nmatch = Regex.Match(input, namedPattern);\nConsole.WriteLine(match.Groups["day"].Value);   // 25
\n\n

3. उन्नत सुविधाएँ: प्रतिस्थापन और विकल्प

\n

Regex.Replace के साथ टेक्स्ट बदलना। यह न केवल सबस्ट्रिंग को हटाने या बदलने की अनुमति देता है, बल्कि प्रतिस्थापन स्ट्रिंग में समूहों का उपयोग करने की भी अनुमति देता है:

\n
string phone = "+7 (123) 456-78-90";\n// अंकों को छोड़कर सब कुछ हटाएँ\nstring clean = Regex.Replace(phone, @"[^\\d]", "");\nConsole.WriteLine(clean); // 71234567890\n\n// प्रारूप बदलें: (123) 456-78-90 → 123-456-7890\nstring formatted = Regex.Replace(phone, \n    @"\\((\\d{3})\\)\\s*(\\d{3})-(\\d{2})-(\\d{2})",\n    "$1-$2-$3$4");\nConsole.WriteLine(formatted); // 123-456-7890
\n

महत्वपूर्ण विकल्प (RegexOptions):

\n
    \n

ब्लॉग

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