Regex.GroupNameFromNumber(Int32) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定したグループ番号に対応するグループ名を取得します。
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
対応するグループ名に変換するグループ番号。
戻り値
指定したグループ番号に関連付けられたグループ名を含んでいる文字列。
i
に対応するグループ名がない場合、このメソッドは Empty を返します。
例
次の例では、米国の市区町村名、州名、郵便番号を含む住所行に一致する正規表現パターンを定義します。 この例では、 メソッドを GroupNameFromNumber 使用してキャプチャ グループの名前を取得します。 次に、これらの名前を使用して、一致する対応するキャプチャ されたグループを取得します。
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.
正規表現パターンは、次の式によって定義されます。
(?<city>[A-Za-z\s]+), (?<state>[A-Za-z]{2}) (?<zip>\d{5}(-\d{4})?)
次の表に、正規表現パターンがどのように解釈されるかを示します。
パターン | 説明 |
---|---|
(?<city>[A-Za-z\s]+) |
1 つ以上の英字または空白文字と一致します。 このキャプチャされたグループに という名前 city を割り当てます。 |
, |
コンマ (,) の後に空白文字を一致させます。 |
(?<state>[A-Za-z]{2}) |
2 つの英字と一致します。 このキャプチャされたグループに という名前 state を割り当てます。 このグループの後に空白文字を付ける必要があります。 |
(?<zip>\d{5}(-\d{4})?) |
5 桁の数字の後に 0 または 1 回のハイフンの後に 4 桁の数字が続く数字と一致します。 このキャプチャされたグループに という名前 zip を割り当てます。 |
注釈
正規表現パターンには、パターン一致内の部分式を示す名前付きキャプチャ グループまたは番号付きキャプチャ グループが含まれる場合があります。 番号付きグループは構文 (部分式) で区切られ、正規表現内の順序に基づいて番号が割り当てられます。 名前付きグループは構文で区切られます (?<
名前>
subexpression)または (?'name'subexpression)、ここで name は、部分式を識別する名前です。 (詳細については、「 グループ化コンストラクト」を参照してください)。メソッドは GroupNameFromNumber 、名前付きグループと番号付きグループの両方を、正規表現内の序数で識別します。 序数位置 0 は、常に正規表現全体を表します。 その後、正規表現パターンでの実際の位置に関係なく、すべての番号付きグループは名前付きグループの前にカウントされます。
が名前付きグループの番号の場合 i
、メソッドはグループの名前を返します。 が名前のないグループの番号である場合 i
、メソッドは数値の文字列表現を返します。 たとえば、 が 1 の場合 i
、メソッドは "1" を返します。 がキャプチャ グループの数でない場合 i
、 メソッドは を返します String.Empty。
パターン一致が見つかった場合、このメソッドによって返される値を使用して、 プロパティからキャプチャされたグループを表すオブジェクトをGroupCollection.Item[]取得Groupできます。 オブジェクトは GroupCollection 、 プロパティによって Match.Groups 返されます。
適用対象
こちらもご覧ください
.NET