Aracılığıyla paylaş


System.Text.RegularExpressions.Regex.Match yöntemi

Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.

yöntemi, Match(String, Int32) bir giriş dizesinde, karakter konumundan başlayarak veya sonrasında normal ifade deseni ile eşleşen ilk alt dizeyi startat döndürür. Yönteminin arama yaptığı Match(String, Int32) normal ifade deseni, sınıf oluşturucularından Regex birine yapılan çağrıyla tanımlanır. Normal ifade deseni oluşturmak için kullanılan dil öğeleri hakkında bilgi için bkz . Normal İfade Dili - Hızlı Başvuru.

startat parametresi

İsteğe bağlı olarak parametresini kullanarak startat dizede bir başlangıç konumu belirtebilirsiniz. Dizede daha önce startat başlayan tüm eşleşmeler yoksayılır. Başlangıç konumu belirtmezseniz arama, soldan sağa aramanın sol ucu input ve sağdan sola aramanın sağ ucu input olan varsayılan konumda başlar. konumundan startatbaşlamasına rağmen, döndürülen eşleşmelerin dizini dizenin başlangıcına göredir.

Normal ifade altyapısı öncesinden başlayarak startatherhangi bir eşleşme döndürmese de, öncesinde startatdizeyi yok saymaz. Başka bir deyişle, tutturucular veya lookbehind onayları gibi onaylar girişe bir bütün olarak uygulanmaya devam eder. Örneğin, aşağıdaki kod giriş dizesindeki 5 dizininden önce startat gerçekleşse bile karşılanan bir lookbehind onayını içeren bir desen içerir.

using System;
using System.Text.RegularExpressions;

namespace Examples
{
    public class Example3
    {
        public static void Main()
        {
            string input = "Zip code: 98052";
            var regex = new Regex(@"(?<=Zip code: )\d{5}");
            Match match = regex.Match(input, 5);
            if (match.Success)
                Console.WriteLine("Match found: {0}", match.Value);
        }
    }
}

// This code prints the following output:
// Match found: 98052

İpucu

  • Bir desen tutturucuyla ^ başlıyorsa ancak startat 0'dan büyükse, tek satırlı aramada eşleşme bulunamaz çünkü dizin 0'dan başlamak için kısıtlanırlar ^ .
  • Yer \G işareti konumundan startatmemnundur. Bu nedenle, bir eşleşmeyi dizede tam olarak belirli bir karakter konumunda başlayacak şekilde kısıtlamak istiyorsanız, normal ifadeyi soldan sağa desen için sola bir ile \G sabitleyin. Bu, eşleşmeyi kısıtlar, böylece tam olarak startat (veya birden çok eşleşme istendiğinde, eşleşmeler bitişik olduğunda) başlamalıdır.

Sağdan sola aramalar

Sağdan sola arama, yani normal ifade deseni seçeneğiyle RegexOptions.RightToLeft oluşturulduğunda aşağıdaki şekilde davranır:

  • Tarama ters yönde hareket eder ve desen arkadan (sağ) öne (sol) eşleştirilir.
  • Varsayılan başlangıç konumu, giriş dizesinin sağ ucudur.
  • Belirtilirsestartat, sağdan sola tarama - 1 (değilstartat) konumundaki karakterde startat başlar.
  • \G Tutturucu bir desenin sağ ucunda belirtildiğinde, (ilk) eşleşmenin tam olarak - 1'de startat bitmesini kısıtlar.

Sağdan sola aramalar hakkında daha fazla bilgi için bkz . Sağdan sola mod.

Eşleşme bulunup bulunmadığını belirleme

Döndürülen Match nesnenin Success özelliğinin değerini denetleyerek giriş dizesinde normal ifade deseninin bulunup bulunmadığını belirleyebilirsiniz. Eşleşme bulunursa, döndürülen Match nesnenin Value özelliği normal ifade deseni ile eşleşen alt dizeyi input içerir. Eşleşme bulunmazsa değeri olur String.Empty.

İlk veya birden çok eşleşme

Bu yöntem, içindeki normal ifade deseni ile eşleşen karakter konumunda input veya sonrasında startat bulunan ilk alt dizeyi döndürür. Döndürülen Match nesnenin Match.NextMatch yöntemini art arda çağırarak sonraki eşleşmeleri alabilirsiniz. Ayrıca yöntemini çağırarak tek bir yöntem çağrısında tüm eşleşmeleri Regex.Matches(String, Int32) alabilirsiniz.

Zaman aşımı özel durumları

Eşleşen RegexMatchTimeoutException işlemin yürütme süresi oluşturucu tarafından Regex.Regex(String, RegexOptions, TimeSpan) belirtilen zaman aşımı aralığını aşarsa özel durum oluşturulur. Oluşturucuyu çağırdığınızda zaman aşımı aralığı ayarlamazsanız, işlem nesnenin oluşturulduğu uygulama etki alanı Regex için belirlenen zaman aşımı değerini aşarsa özel durum oluşturulur. Oluşturucu çağrısında Regex veya uygulama etki alanının özelliklerinde zaman aşımı tanımlanmamışsa ya da zaman aşımı değeri ise Regex.InfiniteMatchTimeoutözel durum oluşturmaz.