Normal İfade Örneği: Tarih Biçimlerini Değiştirme

Aşağıdaki kod örneği, Regex.Replace yöntemini kullanarak mm/dd/yy biçimindeki tarihleri gg-aa-yy biçimindeki tarihlerle değiştirir.

Warning

System.Text.RegularExpressions öğesinin güvenilmeyen girdilerle sınırsız kullanımı, uygulamaları hizmet reddi saldırılarına maruz bırakabilir. Güvenilmeyen girişlerle .NET normal ifadelerini güvenli bir şekilde nasıl kullanacağınızla ilgili yönergeler için .NET'te normal ifadeler için en iyi uygulamalar bölümüne başvurun.

Example

static string MDYToDMY(string input)
{
   try {
      return Regex.Replace(input,
             @"\b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b",
            "${day}-${month}-${year}", RegexOptions.None,
            TimeSpan.FromMilliseconds(150));
   }
   catch (RegexMatchTimeoutException) {
      return input;
   }
}
Function MDYToDMY(input As String) As String
    Try
        Return Regex.Replace(input, _
               "\b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b", _
               "${day}-${month}-${year}", RegexOptions.None,
               TimeSpan.FromMilliseconds(150))
    Catch e As RegexMatchTimeoutException
        Return input
    End Try
End Function

Aşağıdaki kod, yöntemin MDYToDMY bir uygulamada nasıl çağrılabileceğini gösterir.

using System;
using System.Globalization;
using System.Text.RegularExpressions;

public class Class1
{
   public static void Main()
   {
      string dateString = DateTime.Today.ToString("d",
                                        DateTimeFormatInfo.InvariantInfo);
      string resultString = MDYToDMY(dateString);
      Console.WriteLine($"Converted {dateString} to {resultString}.");
   }

   static string MDYToDMY(string input)
   {
      try {
         return Regex.Replace(input,
                @"\b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b",
               "${day}-${month}-${year}", RegexOptions.None,
               TimeSpan.FromMilliseconds(150));
      }
      catch (RegexMatchTimeoutException) {
         return input;
      }
   }
}
// The example displays the following output to the console if run on 8/21/2007:
//      Converted 08/21/2007 to 21-08-2007.
Imports System.Globalization
Imports System.Text.RegularExpressions

Module DateFormatReplacement
    Public Sub Main()
        Dim dateString As String = Date.Today.ToString("d", _
                                             DateTimeFormatInfo.InvariantInfo)
        Dim resultString As String = MDYToDMY(dateString)
        Console.WriteLine("Converted {0} to {1}.", dateString, resultString)
    End Sub

    Function MDYToDMY(input As String) As String
        Try
            Return Regex.Replace(input, _
                   "\b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b", _
                   "${day}-${month}-${year}", RegexOptions.None,
                   TimeSpan.FromMilliseconds(150))
        Catch e As RegexMatchTimeoutException
            Return input
        End Try
    End Function
End Module
' The example displays the following output to the console if run on 8/21/2007:
'      Converted 08/21/2007 to 21-08-2007.

Açıklamalar

Normal ifade düzeni \b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b aşağıdaki tabloda gösterildiği gibi yorumlanır.

Desen Açıklama
\b Eşleşmeyi bir kelime sınırından başlatın.
(?<month>\d{1,2}) Bir veya iki ondalık basamağı eşleştirin. Yakalanan grup budur month .
/ Eğik çizgi işaretiyle eşleş.
(?<day>\d{1,2}) Bir veya iki ondalık basamağı eşleştirin. Yakalanan grup budur day .
/ Eğik çizgi simgesini eşleştir.
(?<year>\d{2,4}) İki ile dört ondalık basamağı eşleştirin. Yakalanan grup budur year .
\b Eşleşmeyi bir sözcük sınırında sonlandırın.

Desen ${day}-${month}-${year} , aşağıdaki tabloda gösterildiği gibi değiştirme dizesini tanımlar.

Desen Açıklama
$(day) day yakalama grubu tarafından yakalanan dizeyi ekleyin.
- Kısa çizgi ekleyin.
$(month) month yakalama grubunun yakaladığı dizeyi ekleyin.
- Kısa çizgi ekleyin.
$(year) year yakalama grubu tarafından yakalanan dizeyi ekleyin.

Ayrıca bakınız