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 startat
baş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 startat
herhangi bir eşleşme döndürmese de, öncesinde startat
dizeyi 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 ancakstartat
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 konumundanstartat
memnundur. 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 olarakstartat
(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.
- Belirtilirse
startat
, sağdan sola tarama - 1 (değilstartat
) konumundaki karakterdestartat
başlar. \G
Tutturucu bir desenin sağ ucunda belirtildiğinde, (ilk) eşleşmenin tam olarak - 1'destartat
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.