Capture.Value プロパティ

定義

入力文字列からキャプチャした部分文字列を取得します。

public:
 property System::String ^ Value { System::String ^ get(); };
public string Value { get; }
member this.Value : string
Public ReadOnly Property Value As String

プロパティ値

String

検索によってキャプチャされた部分文字列。

次の例では、ピリオド ("." を除く) を含む文に一致する正規表現を定義します。 このプロパティは Match.Value 、一致する文で構成される結果文字列を一致ごとに表示します。 このプロパティは Group.Value 、各キャプチャ グループの結果文字列を表示します。これは、そのキャプチャ グループによってキャプチャされた最後の文字列で構成されます。 このプロパティには Capture.Value 、各キャプチャの結果文字列が表示されます。

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "Yes. This dog is very friendly.";
      string pattern = @"((\w+)[\s.])+";
      foreach (Match match in Regex.Matches(input, pattern))
      {
         Console.WriteLine("Match: {0}", match.Value);
         for (int groupCtr = 0; groupCtr < match.Groups.Count; groupCtr++)
         {
            Group group = match.Groups[groupCtr];
            Console.WriteLine("   Group {0}: {1}", groupCtr, group.Value);
            for (int captureCtr = 0; captureCtr < group.Captures.Count; captureCtr++)
               Console.WriteLine("      Capture {0}: {1}", captureCtr, 
                                 group.Captures[captureCtr].Value);
         }                      
      }
   }
}
// The example displays the following output:
//       Match: Yes.
//          Group 0: Yes.
//             Capture 0: Yes.
//          Group 1: Yes.
//             Capture 0: Yes.
//          Group 2: Yes
//             Capture 0: Yes
//       Match: This dog is very friendly.
//          Group 0: This dog is very friendly.
//             Capture 0: This dog is very friendly.
//          Group 1: friendly.
//             Capture 0: This
//             Capture 1: dog
//             Capture 2: is
//             Capture 3: very
//             Capture 4: friendly.
//          Group 2: friendly
//             Capture 0: This
//             Capture 1: dog
//             Capture 2: is
//             Capture 3: very
//             Capture 4: friendly
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "Yes. This dog is very friendly."
      Dim pattern As String = "((\w+)[\s.])+"
      For Each match As Match In Regex.Matches(input, pattern)
         Console.WriteLine("Match: {0}", match.Value)
         For groupCtr As Integer = 0 To match.Groups.Count - 1
            Dim group As Group = match.Groups(groupCtr)
            Console.WriteLine("   Group {0}: {1}", groupCtr, group.Value)
            For captureCtr As Integer = 0 To group.Captures.Count - 1
               Console.WriteLine("      Capture {0}: {1}", captureCtr, _
                                 group.Captures(captureCtr).Value)
            Next
         Next                      
      Next
   End Sub
End Module
' The example displays the following output:
'       Match: Yes.
'          Group 0: Yes.
'             Capture 0: Yes.
'          Group 1: Yes.
'             Capture 0: Yes.
'          Group 2: Yes
'             Capture 0: Yes
'       Match: This dog is very friendly.
'          Group 0: This dog is very friendly.
'             Capture 0: This dog is very friendly.
'          Group 1: friendly.
'             Capture 0: This
'             Capture 1: dog
'             Capture 2: is
'             Capture 3: very
'             Capture 4: friendly.
'          Group 2: friendly
'             Capture 0: This
'             Capture 1: dog
'             Capture 2: is
'             Capture 3: very
'             Capture 4: friendly

正規表現パターン ((\w+)[\s.])+ は、次の表に示すように定義されています。 この正規表現では、量指定子 (+) が正規表現全体に適用されることに注意してください。

Pattern 説明
(\w+) 1 つ以上の単語文字に一致します。 これが 2 番目のキャプチャ グループです。
[\s.]) 空白文字またはピリオド (".") と一致します。
((\w+)[\s.]) 1 つ以上の単語文字の後に空白文字またはピリオド (".") を一致させます。 これが最初のキャプチャ グループです。
((\w+)[\s.])+ 単語または文字の 1 つ以上の出現箇所の後に空白文字またはピリオド ("." が続く) と一致します。

この例では、入力文字列は 2 つの文で構成されています。 出力が示すように、最初の文は 1 つの単語のみで構成されるため CaptureCollection 、オブジェクトにはオブジェクトと同じキャプチャを表す 1 つの Capture オブジェクトがあります Group 。 2 番目の文は複数の単語で構成されるため、オブジェクトには最後に Group 一致した部分式に関する情報のみが含まれます。 グループ 1 は、最初のキャプチャを表し、終了期間を持つ文の最後の単語を含みます。 2 番目のキャプチャを表すグループ 2 には、文の最後の単語が含まれています。 ただし、グループの Capture オブジェクト内のオブジェクトは CaptureCollection 、各部分式の一致をキャプチャします。 最初のキャプチャ グループのキャプチャのコレクション内のオブジェクトには Capture 、キャプチャされた各単語と空白文字またはピリオドに関する情報が含まれています。 Capture 2 番目のキャプチャ グループのキャプチャコレクション内のオブジェクトには、キャプチャされた各単語に関する情報が含まれています。

次の例では、正規表現パターンを使用して、 ^([a-z]+)(\d+)*\.([a-z]+(\d)*)$ピリオドで区切られた 2 つの部分で構成される製品番号を照合します。 どちらの部分も、アルファベット文字の後に省略可能な数字が続きます。 最初の入力文字列がパターンと一致しないため、返される System.Text.RegularExpressions.Match オブジェクトのプロパティの Value 値は String.Empty. 同様に、正規表現パターンがキャプチャ グループと一致できない場合、対応する Group オブジェクト Value のプロパティの値は String.Empty.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      String pattern = @"^([a-z]+)(\d+)?\.([a-z]+(\d)*)$";
      String[] values = { "AC10", "Za203.CYM", "XYZ.CoA", "ABC.x170" };   
      foreach (var value in values) {
         Match m = Regex.Match(value, pattern, RegexOptions.IgnoreCase);
         if (m.Success) {
            Console.WriteLine("Match: '{0}'", m.Value);
            Console.WriteLine("   Number of Capturing Groups: {0}", 
                              m.Groups.Count);
            for (int gCtr = 0; gCtr < m.Groups.Count; gCtr++) {
               Group group = m.Groups[gCtr];
               Console.WriteLine("      Group {0}: {1}", gCtr, 
                                 group.Value == "" ? "<empty>" : "'" + group.Value + "'");   
               Console.WriteLine("         Number of Captures: {0}", 
                                 group.Captures.Count);
           
               for (int cCtr = 0; cCtr < group.Captures.Count; cCtr++) 
                  Console.WriteLine("            Capture {0}: {1}", 
                                    cCtr, group.Captures[cCtr].Value);
            }
         } 
         else {
            Console.WriteLine("No match for {0}: Match.Value is {1}", 
                              value, m.Value == String.Empty ? "<empty>" : m.Value);
         }
      }
   }
}
// The example displays the following output:
//       No match for AC10: Match.Value is <empty>
//       Match: 'Za203.CYM'
//          Number of Capturing Groups: 5
//             Group 0: 'Za203.CYM'
//                Number of Captures: 1
//                   Capture 0: Za203.CYM
//             Group 1: 'Za'
//                Number of Captures: 1
//                   Capture 0: Za
//             Group 2: '203'
//                Number of Captures: 1
//                   Capture 0: 203
//             Group 3: 'CYM'
//                Number of Captures: 1
//                   Capture 0: CYM
//             Group 4: <empty>
//                Number of Captures: 0
//       Match: 'XYZ.CoA'
//          Number of Capturing Groups: 5
//             Group 0: 'XYZ.CoA'
//                Number of Captures: 1
//                   Capture 0: XYZ.CoA
//             Group 1: 'XYZ'
//                Number of Captures: 1
//                   Capture 0: XYZ
//             Group 2: <empty>
//                Number of Captures: 0
//             Group 3: 'CoA'
//                Number of Captures: 1
//                   Capture 0: CoA
//             Group 4: <empty>
//                Number of Captures: 0
//       Match: 'ABC.x170'
//          Number of Capturing Groups: 5
//             Group 0: 'ABC.x170'
//                Number of Captures: 1
//                   Capture 0: ABC.x170
//             Group 1: 'ABC'
//                Number of Captures: 1
//                   Capture 0: ABC
//             Group 2: <empty>
//                Number of Captures: 0
//             Group 3: 'x170'
//                Number of Captures: 1
//                   Capture 0: x170
//             Group 4: '0'
//                Number of Captures: 3
//                   Capture 0: 1
//                   Capture 1: 7
//                   Capture 2: 0
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "^([a-z]+)(\d+)?\.([a-z]+(\d)*)$"
      Dim values() As String = { "AC10", "Za203.CYM", "XYZ.CoA", "ABC.x170" }   
      For Each value In values
         Dim m As Match = Regex.Match(value, pattern, RegexOptions.IgnoreCase)
         If m.Success Then
            Console.WriteLine("Match: '{0}'", m.Value)
            Console.WriteLine("   Number of Capturing Groups: {0}", 
                              m.Groups.Count)
            For gCtr As Integer = 0 To m.Groups.Count - 1
               Dim group As Group = m.Groups(gCtr)
               Console.WriteLine("      Group {0}: {1}", gCtr, 
                                 If(group.Value = "", "<empty>", "'" + group.Value + "'"))   
               Console.WriteLine("         Number of Captures: {0}", 
                                 group.Captures.Count)
           
               For cCtr As Integer = 0 To group.Captures.Count - 1
                  Console.WriteLine("            Capture {0}: {1}", 
                                    cCtr, group.Captures(cCtr).Value)
               Next
            Next
         Else
            Console.WriteLine("No match for {0}: Match.Value is {1}", 
                              value, If(m.Value = String.Empty, "<empty>", m.Value))
         End If
      Next    
   End Sub
End Module
' The example displays the following output:
'       No match for AC10: Match.Value is <empty>
'       Match: 'Za203.CYM'
'          Number of Capturing Groups: 5
'             Group 0: 'Za203.CYM'
'                Number of Captures: 1
'                   Capture 0: Za203.CYM
'             Group 1: 'Za'
'                Number of Captures: 1
'                   Capture 0: Za
'             Group 2: '203'
'                Number of Captures: 1
'                   Capture 0: 203
'             Group 3: 'CYM'
'                Number of Captures: 1
'                   Capture 0: CYM
'             Group 4: <empty>
'                Number of Captures: 0
'       Match: 'XYZ.CoA'
'          Number of Capturing Groups: 5
'             Group 0: 'XYZ.CoA'
'                Number of Captures: 1
'                   Capture 0: XYZ.CoA
'             Group 1: 'XYZ'
'                Number of Captures: 1
'                   Capture 0: XYZ
'             Group 2: <empty>
'                Number of Captures: 0
'             Group 3: 'CoA'
'                Number of Captures: 1
'                   Capture 0: CoA
'             Group 4: <empty>
'                Number of Captures: 0
'       Match: 'ABC.x170'
'          Number of Capturing Groups: 5
'             Group 0: 'ABC.x170'
'                Number of Captures: 1
'                   Capture 0: ABC.x170
'             Group 1: 'ABC'
'                Number of Captures: 1
'                   Capture 0: ABC
'             Group 2: <empty>
'                Number of Captures: 0
'             Group 3: 'x170'
'                Number of Captures: 1
'                   Capture 0: x170
'             Group 4: '0'
'                Number of Captures: 3
'                   Capture 0: 1
'                   Capture 1: 7
'                   Capture 2: 0

正規表現パターンは、次の表に示すように定義されています。

Pattern 説明
^ 文字列の先頭から照合を開始します。
([a-z]+) a から z までの任意の文字の 1 つ以上の出現箇所と一致します。 正規表現エンジンにはオプションが渡 RegexOptions.IgnoreCase されるため、この比較では大文字と小文字が区別されません。 これが最初のキャプチャ グループです。
(\d+)? 0 桁または 1 回以上の 10 進数の出現と一致します。 これが 2 番目のキャプチャ グループです。
\. リテラルのピリオド文字と一致します。
([a-z]+ a から z までの任意の文字の 1 つ以上の出現箇所と一致します。 比較では大文字と小文字は区別されません。
(\d)* 0 個以上の 10 進数と一致します。 1 つの一致した数字が 4 番目のキャプチャ グループです。
([a-z]+(\d)*) a から z までの 1 つ以上のアルファベット文字の後に、0、1、または複数の 10 進数が続く文字と一致します。 これが 4 番目のキャプチャ グループです。
$ 文字列の末尾で一致を終了します。

注釈

or Match.NextMatch メソッドの呼び出しでRegex.Match一致するものが見つからない場合、返されるMatch.Valueプロパティの値は String.Empty. 正規表現エンジンがキャプチャ グループと一致できない場合。 返される Group.Value プロパティの値は String.Empty. 図については、2 番目の例を参照してください。

適用対象