ما الفرق بين المجموعة والمطابقة في RegEx الخاص بـ .NET؟

StackOverflow https://stackoverflow.com/questions/29088

  •  09-06-2019
  •  | 
  •  

سؤال

ما هو الفرق بين أ مجموعة و أ مباراة في RegEx الخاص بـ .NET؟

هل كانت مفيدة؟

المحلول

أ مباراة هو كائن يشير إلى تعبير عادي معين يطابق (جزءًا من) النص الهدف.أ مجموعة يشير إلى جزء من التطابق، إذا كان التعبير العادي الأصلي يحتوي على علامات المجموعة (في الأساس نمط بين قوسين).على سبيل المثال بالكود التالي:

string text = "One car red car blue car";
string pat = @"(\w+)\s+(car)";
Match m = r.Match(text);

m سيكون كائنًا مطابقًا يحتوي على مجموعتين - المجموعة 1، من (\w+), ، والتي استحوذت على "واحد" والمجموعة 2 (من (car)) التي تطابق، حسنًا، "سيارة".

نصائح أخرى

المطابقة هي جزء من سلسلة تتطابق مع التعبير العادي، وبالتالي يمكن أن تكون هناك تطابقات متعددة داخل السلسلة.

داخل المباراة، يمكنك تحديد مجموعات، إما مجهولة أو مسماة، لتسهيل تقسيم المباراة.مثال بسيط هو إنشاء تعبير عادي للبحث عن عناوين URL، ثم استخدام المجموعات الموجودة بالداخل للعثور على البروتوكول (http) والمجال (www.web.com) والمسار (/lol/cats.html) والوسائط وما إلى ذلك.

// Example I made up on the spot, probably doesn't work very well
"(?<protocol>\w+)://(?<domain>[^/]+)(?<path>/[^?])"

يمكن العثور على نمط واحد عدة مرات داخل سلسلة، كما قلت، لذلك إذا كنت تستخدم Regex.Matches(string text) فسوف تحصل على مطابقات متعددة، كل منها يتكون من صفر، أو مجموعة واحدة أو أكثر.

يمكن العثور على هذه المجموعات المسماة إما عن طريق الفهرسة حسب الرقم، أو باستخدام سلسلة.يمكن استخدام المثال أعلاه على النحو التالي:

Match match = pattern.Match(urls);
if (!match.Success) 
    continue;
string protocol = match.Groups["protocol"].Value;
string domain = match.Groups[1].Value;

ولجعل الأمور أكثر إثارة للاهتمام، يمكن مطابقة مجموعة واحدة عدة مرات، ولكن بعد ذلك أوصي بالبدء في قراءة توثيق.

يمكنك أيضًا استخدام المجموعات لإنشاء مراجع خلفية وإجراء بحث جزئي واستبدال، ولكن اقرأ المزيد عن ذلك لاحقًا MSDN.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top