Csharp/C Sharp/Regular Expressions/Group Capture

Материал из .Net Framework эксперт
Версия от 14:47, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Illustrates the use of groups and captures

<source lang="csharp"> /* Mastering Visual C# .NET by Jason Price, Mike Gunderloy Publisher: Sybex; ISBN: 0782129110

  • /

/*

 ExampleC_2.cs illustrates the use of groups and captures
  • /

using System; using System.Text.RegularExpressions; public class ExampleC_2 {

 public static void Main()
 {
   // create a string containing area codes and phone numbers
   string text =
     "(800) 555-1211\n" +
     "(212) 555-1212\n" +
     "(506) 555-1213\n" +
     "(650) 555-1214\n" +
     "(888) 555-1215\n";
   // create a string containing a regular expression to
   // match an area code; this is a group of three numbers within
   // parentheses, e.g. (800)
   // this group is named "areaCodeGroup"
   string areaCodeRegExp = @"(?<areaCodeGroup>\(\d\d\d\))";
   // create a string containing a regular expression to
   // match a phone number; this is a group of seven numbers
   // with a hyphen after the first three numbers, e.g. 555-1212
   // this group is named "phoneGroup"
   string phoneRegExp = @"(?<phoneGroup>\d\d\d\-\d\d\d\d)";
   // create a MatchCollection object to store the matches
   MatchCollection myMatchCollection =
     Regex.Matches(text, areaCodeRegExp + " " + phoneRegExp);
   // use a foreach loop to iterate over the Match objects in
   // the MatchCollection object
   foreach (Match myMatch in myMatchCollection)
   {
     // display the "areaCodeGroup" group match directly
     Console.WriteLine("Area code = " + myMatch.Groups["areaCodeGroup"]);
     // display the "phoneGroup" group match directly
     Console.WriteLine("Phone = " + myMatch.Groups["phoneGroup"]);
     // use a foreach loop to iterate over the Group objects in
     // myMatch.Group
     foreach (Group myGroup in myMatch.Groups)
     {
       // use a foreach loop to iterate over the Capture objects in
       // myGroup.Captures
       foreach (Capture myCapture in myGroup.Captures)
       {
         Console.WriteLine("myCapture.Value = " + myCapture.Value);
       }
     }
   }
 }

}

      </source>