التعبيرات المنتظمة في C# مع أمثلة: دليل شامل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

التعبيرات المنتظمة في C#: أساسيات العمل مع فئة Regex

التعبيرات المنتظمة (regex) هي أداة قوية للبحث واستخراج واستبدال والتحقق من السلاسل النصية وفق نمط محدد. في C# (.NET) يتركز كل العمل مع التعبيرات المنتظمة في مساحة الأسماء System.Text.RegularExpressions والفئة المركزية Regex. في هذه المقالة سنشرح الإمكانيات الأساسية والمتقدمة للتعبيرات المنتظمة في C# من خلال أمثلة عملية.



1. فئة Regex: الطرق الأساسية وإنشاء الأنماط

للعمل مع التعبيرات المنتظمة في C# تحتاج إلى تضمين مساحة الأسماء:

using System.Text.RegularExpressions;

توفر فئة Regex عدة طرق رئيسية:

  • IsMatch — تتحقق مما إذا كانت السلسلة تحتوي على تطابق مع النمط.
  • Match — تُرجع أول تطابق.
  • Matches — تُرجع جميع التطابقات.
  • Replace — تستبدل التطابقات التي تم العثور عليها بسلسلة محددة.
  • Split — تقسم السلسلة بناءً على التطابقات.

مثال بسيط للتحقق من عنوان البريد الإلكتروني:

string email = "user@example.com";string pattern = @"^[\\w\\.-]+@[\\w\\.-]+\\.\\w+$";bool isValid = Regex.IsMatch(email, pattern);Console.WriteLine(isValid); // True

لاحظ الرمز @ قبل السلسلة — هذه سلسلة حرفية (verbatim string) تسهل كتابة الخطوط المائلة العكسية (\\) في الأنماط.



2. البحث واستخراج البيانات: طريقتي Match و Matches

طريقة Match تُرجع كائن Match الذي يحتوي على معلومات حول أول تطابق. إذا لم تكن هناك تطابقات، ستكون الخاصية Success مساوية false.

مثال لاستخراج رقم هاتف من نص:

string text = "اتصل على الرقم +7 (123) 456-78-90 أو +7 (987) 654-32-10";string pattern = @"\\+7\\s?\\(\\d{3}\\)\\s?\\d{3}-\\d{2}-\\d{2}";MatchCollection matches = Regex.Matches(text, pattern);

foreach (Match match in matches){ Console.WriteLine(match.Value);}// الإخراج:// +7 (123) 456-78-90// +7 (987) 654-32-10

طريقة Matches تُرجع مجموعة من جميع التطابقات. يمكنك أيضاً استخدام مجموعات الالتقاط لاستخراج أجزاء منفصلة:

string text = "المعرف: 12345, السعر: 999.99";string pattern = @"السعر:\\s*(\\d+\\.?\\d*)";Match match = Regex.Match(text, pattern);

if (match.Success){ string price = match.Groups[1].Value; Console.WriteLine($"السعر: {price}"); // السعر: 999.99}

يتم تحديد مجموعات الالتقاط بواسطة الأقواس المستديرة () في النمط. المجموعة الصفرية هي التطابق بأكمله، والمجموعات من 1 إلى N هي السلاسل الفرعية الملتقطة.



3. استبدال وتقسيم السلاسل: Replace و Split

طريقة Replace تسمح باستبدال التطابقات بمرونة. وهي تدعم المراجع العكسية ($1, $2 إلخ) لإدراج المجموعات الملتقطة.

مثال لتنسيق التاريخ من "YYYY-MM-DD" إلى "DD.MM.YYYY":

string date = "2025-03-15";string pattern = @"(\\d{4})-(\\d{2})-(\\d{2})";string replacement = "$3.$2.$1";string result = Regex.Replace(date, pattern, replacement);Console.WriteLine(result); // 15.03.2025

طريقة Split تقسم السلسلة بناءً على التطابقات مع النمط. هذا مفيد لتحليل ملفات CSV أو السجلات:

string data = "تفاحة;موز;كرز;عنب";string pattern = @";";string[] fruits = Regex.Split(data, pattern);foreach (var fruit in fruits){    Console.WriteLine(fruit);}// الإخراج:// تفاحة// موز// كرز// عنب

يمكنك أيضاً استخدام فواصل أكثر تعقيداً، مثل عدة مسافات أو علامات ترقيم:

string text = "واحد   اثنان,ثلاثة;أربعة";string[] parts = Regex.Split(                

المدونات

توصيات الكتب