.NET 7.0'da yeni [26]: Düzenli ifadeler için kaynaklar jeneratörü
Bu menşe jeneratörleri) Microsoft'u zaten .NET 5.0 ve C# 9.0'a tanıtmıştır. Şimdi .NET 7.0'daki sınıfta düzenli ifadeler için böyle bir jeneratör var System.Text.RegularExpressions.GeneratorTerimin yürütülme veya derleme zamanının önceki yorumuna kıyasla düzenli ifadelerin yürütülmesi (RegexOptions.Compiled) Hızlandırılmış normal ifadeler. Ek olarak, geliştirme süresi boyunca kodlanizasyon, yürütme aşamasında artık derlemeye izin vermeyen .NET'te kendisini sunan zamanların (bu serinin 17. bölümüne bakınız) derleme ile uyumludur.

Holger Schwichtenberg, 53 ünlü uzmanla tavsiye ve eğitim yoluyla ve yazılımın geliştirilmesinde çok sayıda orta ve büyük şirketi destekleyen uzmanlar ağının teknik direktörüdür. Çok sayıda ulusal ve uluslararası uzman konferansındaki görünümleri, 90'dan fazla uzman kitabı ve 1.500'den fazla uzman makalesi sayesinde Holger Schwichtenberg, Almanya'daki .NET ve Web teknikleri için en iyi uzmanlardan biridir.
Kısmi bir yöntemle kısmi bir sınıf yazın (listeye bakın). Bu yöntemle not edildi System.Text.RegularExpressions.GeneratedRegexAttribute (Önizleme aşamasında, sınıfın adı hala RegexGenerator verwendet) normal ifadeyi ve muhtemelen Regex-Parser için gerekli seçenekleri teyit ederek.
Örnek
Şimdiye kadar .NET'teki normal ifadelerle sınıfla çalıştı System.Text.RegularExpressions.RegEx üreticideki düzenli ifadeyi teyit etmek. Normal ifade sonunda yorumlandı
public string ExtractEMail_Classic(string input)
{
var re =
new Regex(@"w+([-+.']w+)*@w+([-.]w+)*.w+([-.]w+)*");
var m = re.Match(input);
return m.Value;
}
Veya süre boyunca ara dilde tamamlandı:
public string ExtractEMail_ClassicCompiled(string input)
{
// Specifies that the regular expression is compiled to MSIL code,
// instead of being interpreted. Compiled regular expressions
// maximize run-time performance at the expense of initialization time.
var re =
new Regex(@"w+([-+.']w+)*@w+([-.]w+)*.w+([-.]w+)*",
RegexOptions.Compiled);
var m = re.Match(input);
return m.Value;
}
Bu yol .net 7.0 için yenidir: Ek açıklama ile kısmi bir sınıfta kısmi bir yöntem yazın [GeneratedRegex]:
public partial class Checker // Partielle Klasse
{
[GeneratedRegex(@"w+([-+.']w+)*@w+([-.]w+)*.w+([-.]w+)*")]
// Partielle Methode, die dann von SG implementiert wird
public partial Regex EMailRegEx();
}

Kısmi e -posta yöntemi () için oluşturulan uygulama (Şekil 1)
Bu nedenle bu yöntem kodunuzda hatırlanabilir:
public bool IsEMail(string input)
{
return EMailRegEx().IsMatch(input);
}
VEYA
public string ExtractEMail(string input)
{
return EMailRegEx().Match(input).Value;
}
Visual Studio'da yeniden düzenleme
Visual Studio 2022, 17.4 sürümünden, mevcut Regex isteği için yeni Origin jeneratöründe yeniden düzenleme sunuyor:

Regex () 'nin yeniden düzenlenmesi [GeneratedRegex] (Şekil 2)
görüş
Bu serinin bir sonraki kısmı, sınıfın kullanımına göre menşe menşe olan düzenli ifadelerin yürütülme hızı ile ilgilidir. RegEx.
(RME)