Capture.Value Capture.Value Capture.Value Capture.Value Property

Определение

Получает записанную подстроку из входной строки.Gets the captured substring from the input string.

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

Значение свойства

Подстрока, записанная по совпадению.The substring that is captured by the match.

Примеры

В следующем примере определяется регулярное выражение, совпадающее с предложениями, которые не содержат знаков препинания, за исключением точки (".").The following example defines a regular expression that matches sentences that contain no punctuation except for a period ("."). Match.Value Свойство отображает результирующую строку, состоящую из совпадающего предложения, для каждого совпадения.The Match.Value property displays the result string, which consists of a matched sentence, for each match. Group.Value Свойство отображает результирующую строку для каждой захваченной группы. Она состоит из последней строки, захваченной этой группой записи.The Group.Value property displays the result string for each capturing group; it consists of the last string captured by that capturing group. Capture.Value Свойство отображает результирующую строку для каждой записи.The Capture.Value property displays the result string for each capture.

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.])+ определяется, как показано в следующей таблице.The regular expression pattern ((\w+)[\s.])+ is defined as shown in the following table. Обратите внимание, что в этом регулярном выражении квантификатор (+) применяется ко всему регулярному выражению.Note that in this regular expression, a quantifier (+) is applied to the entire regular expression.

ШаблонPattern ОписаниеDescription
(\w+) Совпадение с одним или несколькими символами слова.Match one or more word characters. Это вторая группа записи.This is the second capturing group.
[\s.]) Совпадение с символом пробела или точкой (".").Match a white-space character or period (".").
((\w+)[\s.]) Совпадение с одним или несколькими символами слова, за которыми следует символ пробела или точка (".").Match one or more word characters followed by a white-space character or period ("."). Это первая группа записи.This is the first capturing group.
((\w+)[\s.])+ Совпадение с одним или несколькими вхождениями слова или символов, за которыми следует символ пробела или точка (".").Match one or more occurrences of a word character or characters followed by a white-space character or period (".").

В этом примере входная строка состоит из двух предложений.In this example, the input string consists of two sentences. Как видно из выходных данных, первое предложение состоит только из одного слова, поэтому CaptureCollection объект содержит один Capture объект, представляющий Group ту же запись, что и объект.As the output shows, the first sentence consists of only one word, so the CaptureCollection object has a single Capture object that represents the same capture as the Group object. Второе предложение состоит из нескольких слов, поэтому Group объекты содержат только сведения о последнем сопоставленном вложенном выражении.The second sentence consists of multiple words, so the Group objects only contain information about the last matched subexpression. Группа 1, представляющая первую запись, содержит Последнее слово в предложении с закрывающим периодом.Group 1, which represents the first capture, contains the last word in the sentence that has a closing period. Группа 2, которая представляет второй захват, содержит Последнее слово в предложении.Group 2, which represents the second capture, contains the last word in the sentence. Однако объекты в CaptureCollection объекте группы захватывают каждую соответствующую часть выражения. CaptureHowever, the Capture objects in the group's CaptureCollection object capture each subexpression match. Capture Объекты в коллекции записей первой захваченной группы содержат сведения о каждом захваченном слове, пробелом или точке.The Capture objects in the first capturing group's collection of captures contain information about each captured word and white-space character or period. Capture Объекты во второй коллекции записей захваченной группы содержат сведения о каждом записанном слове.The Capture objects in the second capturing group's collection of captures contain information about each captured word.

В следующем примере шаблон ^([a-z]+)(\d+)*\.([a-z]+(\d)*)$регулярного выражения используется для сопоставления номера продукта, состоящего из двух частей, разделенных точкой.The following example uses a regular expression pattern, ^([a-z]+)(\d+)*\.([a-z]+(\d)*)$, to match a product number that consists of two parts separated by a period. Обе части состоят из алфавитных символов, за которыми следуют необязательные номера.Both parts consist of alphabetic characters followed by optional numbers. Так как первая входная строка не соответствует шаблону, значение System.Text.RegularExpressions.Match Value свойства возвращенного объекта равно String.Empty.Because the first input string does not match the pattern, the value of the returned System.Text.RegularExpressions.Match object's Value property is String.Empty. Аналогично, если шаблон регулярного выражения не может сопоставить группу записи, Group Value свойство соответствующего объекта имеет String.Emptyзначение.Similarly, when the regular expression pattern is unable to match a capturing group, the value of the corresponding Group object's Value property is 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

Шаблон регулярного выражения определяется, как показано в следующей таблице.The regular expression pattern is defined as shown in the following table:

ШаблонPattern ОписаниеDescription
^ Начало совпадения в начале строки.Begin the match at the beginning of the string.
([a-z]+) Совпадение с одним или несколькими вхождениями любого символа от a до z.Match one or more occurrences of any character from a to z. Поскольку обработчику регулярных выражений передается RegexOptions.IgnoreCase параметр, это сравнение не учитывает регистр.Because the regular expression engine is passed the RegexOptions.IgnoreCase option, this comparison is case-insensitive. Это первая группа записи.This is the first capturing group.
(\d+)? Совпадение с нулем или одним вхождением одной или нескольких десятичных цифр.Match zero or one occurrence of one or more decimal digits. Это вторая группа записи.This is the second capturing group.
\. Совпадение с символом литеральной точки.Match a literal period character.
([a-z]+ Совпадение с одним или несколькими вхождениями любого символа от a до z.Match one or more occurrences of any character from a to z. При сравнении регистр не учитывается.The comparison is case-insensitive.
(\d)* Соответствует нулю или нескольким десятичным числам.Match zero or more decimal digits. Одна совпадающая цифра — четвертая группа записи.A single matched digit is the fourth capturing group.
([a-z]+(\d)*) Совпадение с одной или несколькими алфавитными символами от a до z, за которыми следует ноль, одна или несколько десятичных цифр.Match one or more alphabetic characters from a to z followed by zero, one, or more decimal digits. Это четвертая группа записи.This is the fourth capturing group.
$ Завершите совпадение в конце строки.Conclude the match at the end of the string.

Комментарии

Если при вызове Regex.Match метода или Match.NextMatch не удается найти совпадение, возвращается Match.Value значение свойства String.Empty.If a call to the Regex.Match or Match.NextMatch method fails to find a match, the value of the returned Match.Value property is String.Empty. Значение, если обработчик регулярных выражений не может сопоставить группу записи.If the regular expression engine is unable to match a capturing group. возвращаемое Group.Value свойство имеет String.Emptyзначение.the value of the returned Group.Value property is String.Empty. См. Второй пример для иллюстрации.See the second example for an illustration.

Применяется к