كيفية القيام بما يلي: استخراج رقم بروتوكول ورقم منفذ من URL

يقوم المثال التالي باستخراج رقم البروتوكول ورقم المنفذ من URL.

مثال

يستخدم المثال الأسلوب Match.Result لإرجاع بروتوكول متبوعاً بنقطتين متبوعاً برقم المنفذ.

Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim url As String = "https://www.contoso.com:8080/letters/readme.html" 
      Dim r As New Regex("^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/")
      Dim m As Match = r.Match(url)
      If m.Success Then
         Console.WriteLine(r.Match(url).Result("${proto}${port}"))
      End If   
   End Sub
End Module
' The example displays the following output:
'       http:8080
using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string url = "https://www.contoso.com:8080/letters/readme.html";

      Regex r = new Regex(@"^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/");
      Match m = r.Match(url);
      if (m.Success)
         Console.WriteLine(r.Match(url).Result("${proto}${port}")); 
   }
}
// The example displays the following output:
//       http:8080

يمكن تفسير نمط التعبير العادي ^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/ كما هو موضح في الجدول التالية.

النمط

الوصف

^

تبدأ التطابق في بداية السلسلة.

(?<proto>\w+)

تتوافق مع حرف أو أكثر لكلمة. قم بتسمية هذه المجموعة باسم proto.

://

تطابق علامة نقطتين متبوعة بعلامتين مائلتين.

[^/]+?

مطابقة تواجد واحد أو أكثر (ولكن أقل عدد ممكن) لأي عدد أحرف أخري غير علامة الخط مائل.

(?<port>:\d+)?

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

/

تطابق علامة الخط مائل.

يقوم الأسلوب Match.Result بتوسيع تسلسل الاستبدال ${proto}${port}، والذي يصل قيمة مجموعتين تم التقاطهم في نمط التعبير العادي. وهو بديل ملائم لوصل السلاسل بشكل صريح التي تم استردادها من كائن المجموعة الذي تم إرجاعها بواسطة الخاصية Match.Groups.

يستخدم المثال في Match.Resultأسلوب مع استبدال الثاني، ${proto}و ${port}، إلى تتضمن المجموعات التي تم التقاطها في سلسلة الإخراج. يمكنك استرداد المجموعات التي تم التقاطها من الشركة المطابقة GroupCollectionالكائن بدلاً من ذلك، كما يلي تعليمات برمجية العروض.

Console.WriteLine(m.Groups("proto").Value + m.Groups("port").Value)
Console.WriteLine(m.Groups["proto"].Value + m.Groups["port"].Value); 

راجع أيضًا:

موارد أخرى

التعبيرات العادية في .NET Framework