C # - Регулярные выражения

А regular expressionэто шаблон, который можно сопоставить с вводимым текстом. Инфраструктура .Net предоставляет механизм регулярных выражений, который позволяет такое сопоставление. Шаблон состоит из одного или нескольких символьных литералов, операторов или конструкций.

Конструкции для определения регулярных выражений

Существуют различные категории символов, операторов и конструкций, которые позволяют определять регулярные выражения. Щелкните следующие ссылки, чтобы найти эти конструкции.

  • Персонаж убегает

  • Классы персонажей

  • Anchors

  • Группирующие конструкции

  • Quantifiers

  • Конструкции обратной ссылки

  • Чередование конструкций

  • Substitutions

  • Разные конструкции

Класс Regex

Класс Regex используется для представления регулярного выражения. Он имеет следующие часто используемые методы -

Sr. No. Методы и описание
1

public bool IsMatch(string input)

Указывает, находит ли регулярное выражение, указанное в конструкторе Regex, соответствие в указанной входной строке.

2

public bool IsMatch(string input, int startat)

Указывает, находит ли регулярное выражение, указанное в конструкторе Regex, соответствие в указанной входной строке, начиная с указанной начальной позиции в строке.

3

public static bool IsMatch(string input, string pattern)

Указывает, находит ли указанное регулярное выражение соответствие в указанной входной строке.

4

public MatchCollection Matches(string input)

Ищет в указанной входной строке все вхождения регулярного выражения.

5

public string Replace(string input, string replacement)

В указанной входной строке заменяет все строки, соответствующие шаблону регулярного выражения, указанной строкой замены.

6

public string[] Split(string input)

Разбивает входную строку на массив подстрок в позициях, определенных шаблоном регулярного выражения, указанным в конструкторе Regex.

Полный список методов и свойств см. В документации Microsoft по C #.

Пример 1

В следующем примере сопоставляются слова, начинающиеся с 'S' -

using System;
using System.Text.RegularExpressions;

namespace RegExApplication {
   class Program {
      private static void showMatch(string text, string expr) {
         Console.WriteLine("The Expression: " + expr);
         MatchCollection mc = Regex.Matches(text, expr);
         
         foreach (Match m in mc) {
            Console.WriteLine(m);
         }
      }
      static void Main(string[] args) {
         string str = "A Thousand Splendid Suns";
         
         Console.WriteLine("Matching words that start with 'S': ");
         showMatch(str, @"\bS\S*");
         Console.ReadKey();
      }
   }
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат:

Matching words that start with 'S':
The Expression: \bS\S*
Splendid
Suns

Пример 2

В следующем примере сопоставляются слова, начинающиеся с «м» и заканчивающиеся на «е» -

using System;
using System.Text.RegularExpressions;

namespace RegExApplication {
   class Program {
      private static void showMatch(string text, string expr) {
         Console.WriteLine("The Expression: " + expr);
         MatchCollection mc = Regex.Matches(text, expr);
         
         foreach (Match m in mc) {
            Console.WriteLine(m);
         }
      }
      static void Main(string[] args) {
         string str = "make maze and manage to measure it";

         Console.WriteLine("Matching words start with 'm' and ends with 'e':");
         showMatch(str, @"\bm\S*e\b");
         Console.ReadKey();
      }
   }
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат:

Matching words start with 'm' and ends with 'e':
The Expression: \bm\S*e\b
make
maze
manage
measure

Пример 3

Этот пример заменяет лишнее пустое пространство -

using System;
using System.Text.RegularExpressions;

namespace RegExApplication {
   class Program {
      static void Main(string[] args) {
         string input = "Hello   World   ";
         string pattern = "\\s+";
         string replacement = " ";
         
         Regex rgx = new Regex(pattern);
         string result = rgx.Replace(input, replacement);

         Console.WriteLine("Original String: {0}", input);
         Console.WriteLine("Replacement String: {0}", result);    
         Console.ReadKey();
      }
   }
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат:

Original String: Hello World   
Replacement String: Hello World