Поиск по этому блогу

Показаны сообщения с ярлыком Регулярные выражения. Показать все сообщения
Показаны сообщения с ярлыком Регулярные выражения. Показать все сообщения

пятница, 11 мая 2012 г.

Подсчёт повторных вхождений символов

Задача: написать программу, которая будет подсчитывать сколько раз тот или иной символ повторялся в ведённом предложении. Для решения задачи использовалось регулярное выражение.
Как работает:
  1. вводится предложение
  2. создаётся массив чаров, куда конвертируется это предложение
  3. создаётся массив List
  4. запускается цикл по длине введённого предложения
  5. создаём 2 переменные - одна счётчик, другая равна букве из предложения
  6. проверяем символ на соответствие букве или цифре
  7. если это буква или цифра, то записываем в List
  8. подсчитываем вхождение каждого символа.


            Console.Write("Введите предложение: ");
            string sentence = Console.ReadLine();
            char[] arr_chr = sentence.ToCharArray();
            List<char> charList = new List<char>();
            for (int i = 0; i < sentence.Length; i++)
            {
                char chr = arr_chr[i];
                int includes = 0;
                //это проверка, что символ буква
                // Regex.IsMatch - Указывает, обнаружено ли в указанной входной строке соответствие 
                //заданному регулярному выражению
                if (Regex.IsMatch(chr.ToString(), @"[а-я]|[А-Я]|[A-Z]|[a-z]|[0-9]+$") && !charList.Contains(chr))
                {
                    charList.Add(chr);
                    for (int j = 0; j < sentence.Length; j++)
                        if (chr == arr_chr[j])//подсчитываем вхождения каждого символа
                            includes++;
                    Console.Write(chr.ToString() + "=" + includes + "\t");
                }
            }
            Console.ReadKey(true);

воскресенье, 22 апреля 2012 г.

Регулярные выражения в C# часть 3

Проверка имени файла и его расширение

^(([A-Za-z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))+  
    (.psd|.png|.tif|.bmp|.gif|.jpg|.jpeg)$  


^(([A-Za-z]:)|(\\{2}\w+)\$?)(.*)+  
    (.psd|.png|.tif|.bmp|.gif|.jpg|.jpeg)$ 

Проверка url

^(http|https)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}  
    (:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$  

или

http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?  


Проверка емэйла



[.\\-_a-z0-9]+@([a-z0-9][\\-a-z0-9]+\\.)+[a-z]{2,6}
или
^['\\w_-]+(\\.['\\w_-]+)*@['\\w_-]+(\\.['\\w_-]+)*\\.[a-zA-Z]{2,6}$  
или
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*


Регулярные выражения в C# часть 2

Продолжение темы. Пара дополнений + пара примеров.

Классы пространства имен System.Text.RegularExpressions

Capture - Представляет результаты из отдельной записи части выраже-
ния. Capture представляет одну подстроку для отдельной успешной записи.

CaptureCollection - Представляет последовательность подстрок записи.

CaptureCollection возвращает набор записей, сделанных одной группой записи.

Group - Group представляет результаты отдельной группы записи.
Группа записи может записать ноль, одну или более строк в одно совпадение из-за кванторов, таким образом Group предоставляет коллекцию объектов Capture.

GroupCollection - Представляет коллекцию групп записи. GroupCollection возвращает набор групп записи в одном совпадении.

Match - Представляет результаты из отдельного совпадения регулярного выражения.

MatchCollection - Представляет набор успешных совпадений, обнаруженных путем итеративного применения шаблона регулярного выражения к входной строке.

Regex - Представляет постоянное регулярное выражение.

RegexCompilationInfo - Представляет сведения о регулярном выражении, используемые для компиляции регулярного выражения в отдельную сборку.

RegexRunner - Класс RegexRunner является базовым классом для скомпилированных регулярных выражений.

RegexRunnerFactory - Создает класс RegexRunner для скомпилированного регулярного выражения.


Регулярные выражения в C# часть 1

Регулярные выражения предоставляют мощный, гибкий и эффективный метод обработки текста. Обширные возможности сопоставления шаблонов, предоставляемые регулярными выражениями, позволяют быстро анализировать большие объемы текста, отыскивая в них определенные символьные шаблоны, проверять текст на соответствие определенным заранее шаблонам (например, формату адреса электронной почты), извлекать, изменять, заменять или удалять подстроки текста, а также добавлять извлеченные строки в коллекцию для формирования отчетов.
Ну это выписка с http://msdn.microsoft.com/ru-ru/library/hs600312.aspx.
Цель данного поста - записать для себя памятку по регулярным выражениям в C#. Постараться найти и записать примеры реализации регулярных выражений + объяснение, что они делают.