Capture.Value Vlastnost

Definice

Získá zachycený podřetězcec ze vstupního řetězce.

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

Hodnota vlastnosti

Podřetěc, který je zachycen pomocí shody.

Příklady

Následující příklad definuje regulární výraz, který odpovídá větám, které neobsahují žádnou interpunkci kromě tečky ("."). Vlastnost Match.Value zobrazí výsledný řetězec, který se skládá z odpovídající věty, pro každou shodu. Vlastnost Group.Value zobrazuje výsledný řetězec pro každou zachytávající skupinu; skládá se z posledního řetězce zachyceného zachytávající skupinou. Vlastnost Capture.Value zobrazí výsledný řetězec pro každý záznam.

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

Vzor ((\w+)[\s.])+ regulárního výrazu je definovaný tak, jak je znázorněno v následující tabulce. Všimněte si, že v tomto regulárním výrazu se na celý regulární výraz použije kvantifikátor (+).

Vzor Description
(\w+) Porovná jeden nebo více znaků slova. Toto je druhá zachytávající skupina.
[\s.]) Spárovat prázdný znak nebo tečku (".").
((\w+)[\s.]) Porovná jeden nebo více znaků slova následovaných prázdným znakem nebo tečkou ("."). Toto je první zachytávající skupina.
((\w+)[\s.])+ Porovná jeden nebo více výskytů znaku slova nebo znaků následovaných prázdným znakem nebo tečkou (".").

V tomto příkladu se vstupní řetězec skládá ze dvou vět. Jak ukazuje výstup, první věta se skládá pouze z jednoho slova, takže CaptureCollection objekt má jeden Capture objekt, který představuje stejný záznam jako Group objekt. Druhá věta se skládá z více slov, takže Group objekty obsahují pouze informace o posledním odpovídajícím dílčím výrazu. Skupina 1, která představuje první záznam, obsahuje poslední slovo ve větě, která má uzavírací období. Skupina 2, která představuje druhý záznam, obsahuje poslední slovo ve větě. Capture Objekty v objektu skupiny CaptureCollection však zachytávají jednotlivé dílčí výrazy. Objekty Capture v kolekci zachycení první zachytávající skupiny obsahují informace o jednotlivých zachycených slovech a prázdných znacích nebo tečkách. Objekty Capture v kolekci zachytávání druhé skupiny obsahují informace o jednotlivých zachycených slovech.

Následující příklad používá vzor regulárního výrazu , ^([a-z]+)(\d+)*\.([a-z]+(\d)*)$který odpovídá číslu výrobku, který se skládá ze dvou částí oddělených tečkou. Obě části se skládají z abecedních znaků následovaných volitelnými čísly. Vzhledem k tomu, že první vstupní řetězec neodpovídá vzoru, hodnota vlastnosti vráceného System.Text.RegularExpressions.Match objektu Value je String.Empty. Podobně platí, že pokud se vzor regulárního výrazu nemůže shodovat se zachytávající skupinou, hodnota vlastnosti odpovídajícího Group objektu Value je 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

Vzor regulárního výrazu je definovaný tak, jak je znázorněno v následující tabulce:

Vzor Description
^ Zahajte shodu na začátku řetězce.
([a-z]+) Porovná jeden nebo více výskytů libovolného znaku od a do z. Vzhledem k tomu, že modul regulárních výrazů je předán RegexOptions.IgnoreCase možnost, toto porovnání nerozlišuje velká a malá písmena. Toto je první zachytávající skupina.
(\d+)? Porovná nula nebo jeden výskyt jedné nebo více desetinných číslic. Toto je druhá zachytávající skupina.
\. Porovná znak literálu tečky.
([a-z]+ Porovná jeden nebo více výskytů libovolného znaku od a do z. Při porovnání se nerozlišují malá a velká písmena.
(\d)* Porovná žádnou nebo několik desítkových číslic. Jedna shodná číslice je čtvrtá zachytácí skupina.
([a-z]+(\d)*) Porovná jeden nebo více abecedních znaků od a do z následovaných nulou, jednou nebo více desetinnými číslicemi. Toto je čtvrtá zachycená skupina.
$ Na konci řetězce uzavřete shodu.

Poznámky

Pokud se Regex.Match volání metody nebo Match.NextMatch nepodaří najít shodu, hodnota vrácené Match.Value vlastnosti je String.Empty. Pokud modul regulárních výrazů nemůže odpovídat zachytávající skupině. hodnota vrácené Group.Value vlastnosti je String.Empty. Podívejte se na druhý příklad pro ilustraci.

Platí pro