Regex.GetGroupNames Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Normal ifade için grup adlarını yakalama dizisi döndürür.
public:
cli::array <System::String ^> ^ GetGroupNames();
public string[] GetGroupNames ();
member this.GetGroupNames : unit -> string[]
Public Function GetGroupNames () As String()
Döndürülenler
- String[]
Grup adlarından oluşan bir dize dizisi.
Örnekler
Aşağıdaki örnek, normal ifade gruplarının adlarını ve eşleşen metinlerini görüntüleyen genel amaçlı ShowMatches
bir yöntem tanımlar.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"\b(?<FirstWord>\w+)\s?((\w+)\s)*(?<LastWord>\w+)?(?<Punctuation>\p{Po})";
string input = "The cow jumped over the moon.";
Regex rgx = new Regex(pattern);
Match match = rgx.Match(input);
if (match.Success)
ShowMatches(rgx, match);
}
private static void ShowMatches(Regex r, Match m)
{
string[] names = r.GetGroupNames();
Console.WriteLine("Named Groups:");
foreach (var name in names) {
Group grp = m.Groups[name];
Console.WriteLine(" {0}: '{1}'", name, grp.Value);
}
}
}
// The example displays the following output:
// Named Groups:
// 0: 'The cow jumped over the moon.'
// 1: 'the '
// 2: 'the'
// FirstWord: 'The'
// LastWord: 'moon'
// Punctuation: '.'
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim pattern As String = "\b(?<FirstWord>\w+)\s?((\w+)\s)*(?<LastWord>\w+)?(?<Punctuation>\p{Po})"
Dim input As String = "The cow jumped over the moon."
Dim rgx As New Regex(pattern)
Dim match As Match = rgx.Match(input)
If match.Success Then ShowMatches(rgx, match)
End Sub
Private Sub ShowMatches(r As Regex, m As Match)
Dim names() As String = r.GetGroupNames()
Console.WriteLine("Named Groups:")
For Each name In names
Dim grp As Group = m.Groups.Item(name)
Console.WriteLine(" {0}: '{1}'", name, grp.Value)
Next
End Sub
End Module
' The example displays the following output:
' Named Groups:
' 0: 'The cow jumped over the moon.'
' 1: 'the '
' 2: 'the'
' FirstWord: 'The'
' LastWord: 'moon'
' Punctuation: '.'
Bu durumda, normal ifade deseninin \b(?<FirstWord>\w+)\s?((\w+)\s)*(?<LastWord>\w+)?(?<Punctuation>\p{Po})
basit bir cümleyi ayrıştırması ve ilk sözcüğü, son sözcüğü ve bitiş noktalama işaretlerini tanımlaması amaçlanmıştır. Aşağıdaki tabloda normal ifade deseninin nasıl yorumlandığı gösterilmektedir:
Desen | Description |
---|---|
\b |
Bir sözcük sınırında eşleşmeye başla. |
(?<FirstWord>\w+) |
Bir veya daha fazla sözcük karakteri eşleştir. Bu adlandırılmış grup.FirstWord |
\s? | Sıfır veya bir beyaz boşluk karakterini eşleştirin. |
(\w+) | Bir veya daha fazla sözcük karakteri eşleştir. Bu ikinci yakalama grubudur. |
\s | Bir boşluk karakteri ile eşleştirin. |
((\w+)\s)* | Bir veya daha fazla sözcük karakterinin sıfır veya daha fazla örneğini ve ardından boşluk ekleyin. Bu ilk yakalama grubudur. |
(?<LastWord> \w+)? | Bir veya daha fazla sözcük karakterinin sıfır veya bir oluşumunu eşleştirin. Bu adlandırılmış grup.LastWord |
(?<Punctuation> \p{Po}) | Unicode kategorisi Noktalama, Diğer olan bir karakteri eşleştirin. Bu adlandırılmış grup.Punctuation |
Açıklamalar
Grup adları koleksiyonu, ifadedeki yakalama gruplarını adlandırmak için kullanılan dize kümesini içerir. Yakalama grupları açıkça adlandırılmasa bile, bunlara otomatik olarak sayısal adlar ("0", "1", "2", "3" vb.) atanır. "0" adlı grup, normal ifade deseni ile eşleşen tüm metni temsil eder. Numaralandırılmış gruplar koleksiyondaki açıkça adlandırılmış grupların önüne gelir ve adlandırılmış gruplar normal ifade deseninde tanımlanma sıralarında görünür.
Normal ifadedeki grup sayısını belirlemek için bu yöntem tarafından döndürülen dizide özelliğini kullanabilirsiniz Length .