كيفية استرجاع النص المحدد باستخدام Regex
في C#
عند العمل مع السلاسل النصية في C#، قد تواجه مواقف تحتاج فيها إلى استخراج قطع معينة من المعلومات بناءً على الأنماط. واحدة من المشكلات الشائعة هي تحويل وظائف التعبيرات النمطية (regex) من لغات مثل Perl إلى C#. يركز هذا المنشور على كيفية استرجاع النص المحدد باستخدام Regex
في C#، مما يوفر لك حلول بسيطة وواضحة.
توضيح المشكلة
افترض أن لديك سلسلة نصية تحتوي على نمط تريد استخراجه. على سبيل المثال، إذا كانت لديك سلسلة نصية تبدو كالتالي “Index: 25”، وتريد استرجاع الرقم “25” كعدد صحيح، يمكنك عادةً استخدام التعبير النمطي للعثور على النمط. في Perl، يمكن القيام بذلك باستخدام الكود التالي:
$indexVal = 0;
if($string =~ /Index: (\d*)/){$indexVal = $1;}
في هذا المثال، يبحث النمط التعبيري /Index: (\d*)/
عن السلسلة الفرعية “Index: " متبوعة بأرقام، ويقوم بالتقاط الأرقام للاستخدام لاحقًا. لكن، كيف يمكننا تحقيق نفس الوظيفة في C#؟
الحل في C#
الآن دعنا نفصل كيفية تنفيذ نفس الوظيفة في C#. فيما يلي الخطوات لكتابة قطعة شبيهة من الكود في C# التي تستخرج الرقم بعد “Index: “.
الخطوة 1: استيراد مساحة الأسماء الضرورية
أولاً، تأكد من استيراد مساحة الأسماء System.Text.RegularExpressions
، التي توفر لك فئة Regex
التي تحتاجها لعمليات التعبير النمطي.
using System.Text.RegularExpressions;
الخطوة 2: تعريف نمط التعبير النمطي الخاص بك
قم بإنشاء كائن Regex
بنفس النمط الذي استخدمته في Perl:
Regex re = new Regex(@"Index: (\d*)");
الخطوة 3: مطابقة النمط ضد سلسلتك النصية
بعد ذلك، سترغب في مطابقة التعبير النمطي مع سلسلة الإدخال الخاصة بك:
Match m = re.Match(s); // 's' هي سلسلة الإدخال الخاصة بك
الخطوة 4: استخراج القيمة المطابقة
الآن، يمكنك التحقق مما إذا تم العثور على تطابق واستخراج المجموعة الملتقطة، تمامًا كما فعلت في Perl:
int indexVal = 0; // القيمة الافتراضية
if(m.Success)
{
// المجموعة الملتقطة في الفهرس 1
int.TryParse(m.Groups[1].Value, out indexVal); // معلمة out للسلامة
}
مثال كامل على كود C#
إليك كيف يمكن أن يبدو الكود الكامل في سياق C#:
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
string s = "Index: 25"; // مثال على سلسلة الإدخال
int indexVal = 0;
Regex re = new Regex(@"Index: (\d*)");
Match m = re.Match(s);
if(m.Success)
{
int.TryParse(m.Groups[1].Value, out indexVal);
}
Console.WriteLine("القيمة المستخرجة للفهرس: " + indexVal);
}
}
الخلاصة
استرجاع النص المحدد باستخدام Regex
في C# هو أمر بسيط بمجرد أن تفهم التحويل من لغات برمجة أخرى مثل Perl. من خلال اتباع الخطوات الموضحة أعلاه، يمكنك استخراج المعلومات المطلوبة من سلسلة نصية باستخدام أنماط التعبير النمطي بثقة.
النقطة المهمة
- فهم أنماط التعبير النمطي أمر حاسم لاستخراج النصوص بشكل فعال في C#. بمجرد أن تتقن ذلك، ستجد وظائف مشابهة عبر لغات البرمجة المختلفة.
لا تتردد في تجربة أنماط مختلفة واستكشاف قدرات فئة Regex
في C#. برمجة سعيدة!