Match.NextMatch メソッド
一致する対象が最後に見つかった位置 (最後に一致した文字の後ろの文字) から開始して、次に一致する対象を検索した結果の Match を返します。
Public Function NextMatch() As Match
[C#]
public Match NextMatch();
[C++]
public: Match* NextMatch();
[JScript]
public function NextMatch() : Match;
戻り値
次の正規表現 Match オブジェクト。
解説
この関数は Match を再び呼び出し、新しい開始位置として (Index+Length) を渡すのと似ていますが、文字列の末尾に達するまで検索を続行し、ゼロ長の一致にも対応する点で、直接 Match を呼び出すのとは異なります。
使用例
Dim text As String = "One car red car blue car"
Dim pat As String = "(\w+)\s+(car)"
' Compile the regular expression.
Dim r As Regex = new Regex(pat, RegexOptions.IgnoreCase)
' Match the regular expression pattern against a text string.
Dim m As Match = r.Match(text)
Dim matchcount as Integer = 0
While (m.Success)
matchCount += 1
Console.WriteLine("Match" & (matchCount))
Dim i As Integer
For i = 1 to 2
Dim g as Group = m.Groups(i)
Console.WriteLine("Group" & i & "='" & g.ToString() & "'")
Dim cc As CaptureCollection = g.Captures
Dim j As Integer
For j = 0 to cc.Count - 1
Dim c As Capture = cc(j)
Console.WriteLine("Capture" & j & "='" & c.ToString() _
& "', Position=" & c.Index)
Next j
Next i
m = m.NextMatch()
End While
[C#]
string text = "One car red car blue car";
string pat = @"(\w+)\s+(car)";
// Compile the regular expression.
Regex r = new Regex(pat, RegexOptions.IgnoreCase);
// Match the regular expression pattern against a text string.
Match m = r.Match(text);
int matchCount = 0;
while (m.Success)
{
Console.WriteLine("Match"+ (++matchCount));
for (int i = 1; i <= 2; i++)
{
Group g = m.Groups[i];
Console.WriteLine("Group"+i+"='" + g + "'");
CaptureCollection cc = g.Captures;
for (int j = 0; j < cc.Count; j++)
{
Capture c = cc[j];
System.Console.WriteLine("Capture"+j+"='" + c + "', Position="+c.Index);
}
}
m = m.NextMatch();
}
[C++]
String* text = S"One car red car blue car";
String* pat = S"(\\w+)\\s+(car)";
// Compile the regular expression.
Regex* r = new Regex(pat, RegexOptions::IgnoreCase);
// Match the regular expression pattern against a text string.
Match* m = r->Match(text);
int matchCount = 0;
while (m->Success)
{
Console::WriteLine(S"Match{0}", __box(++matchCount));
for (int i = 1; i <= 2; i++) {
Group* g = m->Groups->Item[i];
Console::WriteLine(S"Group{0}='{1}'", __box(i), g);
CaptureCollection* cc = g->Captures;
for (int j = 0; j < cc->Count; j++)
{
Capture* c = cc->Item[j];
System::Console::WriteLine(S"Capture{0}='{1}', Position={2}", __box(j), c, __box(c->Index));
}
}
m = m->NextMatch();
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET