Regex.GroupNameFromNumber(Int32) メソッド

定義

指定したグループ番号に対応するグループ名を取得します。Gets the group name that corresponds to the specified group number.

public:
 System::String ^ GroupNameFromNumber(int i);
public string GroupNameFromNumber (int i);
member this.GroupNameFromNumber : int -> string
Public Function GroupNameFromNumber (i As Integer) As String

パラメーター

i
Int32

対応するグループ名に変換するグループ番号。The group number to convert to the corresponding group name.

戻り値

指定したグループ番号に関連付けられたグループ名を含んでいる文字列。A string that contains the group name associated with the specified group number. i に対応するグループ名がない場合、このメソッドは Empty を返します。If there is no group name that corresponds to i, the method returns Empty.

次の例では、米国の市区町村名、州名、および郵便番号を含む住所行と一致する正規表現パターンを定義します。The following example defines a regular expression pattern that matches an address line containing a U.S. city name, state name, and zip code. この例ではGroupNameFromNumber 、メソッドを使用して、キャプチャグループの名前を取得します。The example uses the GroupNameFromNumber method to retrieve the names of capturing groups. 次に、これらの名前を使用して、一致するために対応するキャプチャグループを取得します。It then uses these names to retrieve the corresponding captured groups for matches.

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"(?<city>[A-Za-z\s]+), (?<state>[A-Za-z]{2}) (?<zip>\d{5}(-\d{4})?)";
      string[] cityLines = {"New York, NY 10003", "Brooklyn, NY 11238", "Detroit, MI 48204", 
                            "San Francisco, CA 94109", "Seattle, WA 98109" };
      Regex rgx = new Regex(pattern);
      List<string> names = new List<string>();
      int ctr = 1;
      bool exitFlag = false;
      // Get group names.
      do {
         string name = rgx.GroupNameFromNumber(ctr);
         if (! String.IsNullOrEmpty(name))
         {
            ctr++;
            names.Add(name);
         }
         else
         {
            exitFlag = true;
         }
      } while (! exitFlag);

      foreach (string cityLine in cityLines)
      {
         Match match = rgx.Match(cityLine);
         if (match.Success)
            Console.WriteLine("Zip code {0} is in {1}, {2}.", 
                               match.Groups[names[3]], 
                               match.Groups[names[1]], 
                               match.Groups[names[2]]);
      } 
   }
}
// The example displays the following output:
//       Zip code 10003 is in New York, NY.
//       Zip code 11238 is in Brooklyn, NY.
//       Zip code 48204 is in Detroit, MI.
//       Zip code 94109 is in San Francisco, CA.
//       Zip code 98109 is in Seattle, WA.
Imports System.Collections.Generic
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "(?<city>[A-Za-z\s]+), (?<state>[A-Za-z]{2}) (?<zip>\d{5}(-\d{4})?)"
      Dim cityLines() As String = {"New York, NY 10003", "Brooklyn, NY 11238", "Detroit, MI 48204", _
                                   "San Francisco, CA 94109", "Seattle, WA 98109" }
      Dim rgx As New Regex(pattern)
      Dim names As New List(Of String)      
      Dim ctr As Integer = 1
      Dim exitFlag As Boolean = False
      ' Get group names.
      Do 
         Dim name As String = rgx.GroupNameFromNumber(ctr)
         If Not String.IsNullOrEmpty(name) Then
            ctr += 1
            names.Add(name)
         Else
            exitFlag = True
         End If
      Loop While Not exitFlag
      
      For Each cityLine As String In cityLines
         Dim match As Match = rgx.Match(cityLine)
         If match.Success Then
            Console.WriteLine("Zip code {0} is in {1}, {2}.", _
                               match.Groups.Item(names.Item(3)), _
                               match.Groups.Item(names.Item(1)), _
                               match.Groups.Item(names.Item(2)))
         End If   
      Next 
   End Sub
End Module
' The example displays the following output:
'       Zip code 10003 is in New York, NY.
'       Zip code 11238 is in Brooklyn, NY.
'       Zip code 48204 is in Detroit, MI.
'       Zip code 94109 is in San Francisco, CA.
'       Zip code 98109 is in Seattle, WA.

正規表現パターンは、次の式によって定義されます。The regular expression pattern is defined by the following expression:

(?<city>[A-Za-z\s]+), (?<state>[A-Za-z]{2}) (?<zip>\d{5}(-\d{4})?)

次の表に、正規表現パターンがどのように解釈されるかを示します。The following table shows how the regular expression pattern is interpreted.

パターンPattern 説明Description
(?<city>[A-Za-z\s]+) 1つ以上の英字または空白文字と一致します。Match one or more alphabetic or white-space character. このキャプチャされたグループcityに名前を割り当てます。Assign this captured group the name city.
, コンマ (,) の後に空白文字が続くパターンに一致します。Match a comma (,) followed by a white-space character.
(?<state>[A-Za-z]{2}) 2つの英字に一致します。Match two alphabetic characters. このキャプチャされたグループstateに名前を割り当てます。Assign this captured group the name state. このグループの後には、空白文字が必要です。This group should be followed by a white-space character.
(?<zip>\d{5}(-\d{4})?) 5桁の数字の後に、0回または1回のハイフンの後に4桁の数字が続くパターンに一致します。Match five numeric digits followed by either zero or one occurrence of a hyphen followed by four digits. このキャプチャされたグループzipに名前を割り当てます。Assign this captured group the name zip.

注釈

正規表現パターンには、名前付きまたは番号付きのキャプチャグループを含めることができます。これは、パターンマッチ内の部分式を表します。A regular expression pattern may contain either named or numbered capturing groups, which delineate subexpressions within a pattern match. 番号付きグループは構文 (部分式) で区切られ、正規表現の順序に基づいて番号が割り当てられます。Numbered groups are delimited by the syntax (subexpression) and are assigned numbers based on their order in the regular expression. 名前付きグループは構文で区切られます< (?名前部分式) または (?) ** >名前'部分式)。ここで、 nameは部分式の識別に使用される名前です。Named groups are delimited by the syntax (?<name>subexpression) or (?'name'subexpression), where name is the name by which the subexpression will be identified. (詳しくは、「正規表現でのグループ化構成体」をご覧ください)。メソッドGroupNameFromNumberは、正規表現内の序数位置によって名前付きグループと番号付きグループの両方を識別します。(For more information, see Grouping Constructs.) The GroupNameFromNumber method identifies both named groups and numbered groups by their ordinal positions in the regular expression. 序数位置0は、常に正規表現全体を表します。Ordinal position zero always represents the entire regular expression. 正規表現パターンの実際の位置に関係なく、すべての番号付きグループは名前付きグループの前にカウントされます。All numbered groups are then counted before named groups, regardless of their actual position in the regular expression pattern.

i名前付きグループの数の場合、メソッドはグループの名前を返します。If i is the number of a named group, the method returns the name of the group. i名前のないグループの数である場合、メソッドは数値の文字列形式を返します。If i is the number of an unnamed group, the method returns the string representation of the number. たとえば、が 1 iの場合、メソッドは "1" を返します。For example, if i is 1, the method returns "1". iキャプチャグループの数ではない場合、メソッドはをString.Empty返します。If i is not the number of a capturing group, the method returns String.Empty.

パターン一致が見つかった場合、このメソッドによって返される値を使用して、 Groupキャプチャされたグループを表すオブジェクトGroupCollection.Item[String]をプロパティから取得できます。If a pattern match is found, the value returned by this method can then be used to retrieve the Group object that represents the captured group from the GroupCollection.Item[String] property. オブジェクトは、 Match.Groupsプロパティによって返されます。 GroupCollectionThe GroupCollection object is returned by the Match.Groups property.

適用対象

こちらもご覧ください