41768

Создании простейших программ с использованием регулярных выражений

Лабораторная работа

Информатика, кибернетика и программирование

Контрольные вопросы: Для чего используются регулярные выражения Для чего используются конструкции группирования и обратных ссылок Для чего используется класс Regex Пояснения и примеры: Регулярные выражения предназначены для обработки текстовой информации и обеспечивают: эффективный поиск в тексте по заданному шаблону; редактирование замену и удаление подстрок; формирование итоговых отчетов по результатам работы с текстом.NET для работы с регулярными выражениями объединены в пространство имен System. Для описания регулярного...

Русский

2013-10-25

492.02 KB

7 чел.

Лабораторная работа № 3

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

Цель работы:

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

Задачи:

  1.  Реализовать решение задания своего варианта с использованием методов класса Regex;
  2.  Выполнить требования к лабораторным работам (см.файл «Требования к лабораторным»);
  3.  Ознакомиться с литературой по теме лабораторной работы;
  4.  Ответить на контрольные вопросы.

Контрольные вопросы:

  1.  Для чего используются регулярные выражения?
  2.  Для чего используются конструкции группирования и обратных ссылок?
  3.  Для чего используется класс Regex?

Пояснения и примеры:

Регулярные выражения предназначены для обработки текстовой информации и обеспечивают:

  1.  эффективный поиск в тексте по заданному шаблону;
  2.  редактирование, замену и удаление подстрок;
  3.  формирование итоговых отчетов по результатам работы с текстом.

Регулярное выражение — это шаблон (образец), по которому выполняется поиск соответствующего ему фрагмента текста. Язык описания регулярных выражений состоит из символов двух видов: обычных и метасимволов. Обычный символ представляет в выражении сам себя, а метасимвол — некоторый класс символов, например любую цифру или букву.

Классы библиотеки .NET для работы с регулярными выражениями объединены в пространство имен System.Text.RegularExpressions. Класс Regex представляет собственно регулярное выражение. Класс является неизменяемым, то есть после создания экземпляра его корректировка не допускается. Для описания регулярного выражения в классе определено несколько перегруженных конструкторов:

  1.  Regex() — создает пустое выражение;
  2.  Regex(String) — создает заданное выражение;
  3.  Regex(String, RegexOptions) — создает заданное выражение и задает параметры для его обработки с помощью элементов перечисления RegexOptions (например, различать или не различать прописные и строчные буквы).

Пример конструктора, задающего выражение для поиска в тексте повторяющихся слов, расположенных подряд и разделенных произвольным количеством пробелов, независимо от регистра:

Regex гх = new Regex( @"\b(?<word>\w+)\s+(\k<word>)\b", RegexOptions.IgnoreCase );

Поиск фрагментов строки, соответствующих заданному выражению, выполняется с помощью методов IsMatch, Match и Matches.

Метод IsMatch возвращает true, если фрагмент, соответствующий выражению в заданной строке найден, и false в противном случае.

Метод Match класса Regex, в отличие от метода IsMatch, не просто определяет, произошло ли совпадение, а возвращает объект класса Match — очередной фрагмент, совпавший с образцом.

Метод Matches класса Regex возвращает объект класса MatchCollection — коллекцию всех фрагментов заданной строки, совпавших с образцом.

Метод Split класса Regex разбивает заданную строку на фрагменты в соответствии с разделителями, заданными с помощью регулярного выражения, и возвращает эти фрагменты в массиве строк.

Метод Replace класса Regex позволяет выполнять замену фрагментов текста.

Примеры использования:

Пример 1. Замена подстрок

Предположим, список рассылки содержит записи, в которых, помимо имени и фамилии, может указываться обращение ("Mr.", "Mrs.", "Miss" или "Ms."). Если при создании меток для конвертов по такому списку указывать обращение не требуется, можно использовать для удаления обращений регулярное выражение, как показано в следующем примере.

using System;

using System.Text.RegularExpressions;

public class Example

{

  public static void Main()

  {

     string pattern = "(Mr\\.? |Mrs\\.? |Miss |Ms\\.? )";

     string[] names = { "Mr. Henry Hunt", "Ms. Sara Samuels",

                        "Abraham Adams", "Ms. Nicole Norris" };

     foreach (string name in names)

        Console.WriteLine(Regex.Replace(name, pattern, String.Empty));

  }

}

// The example displays the following output:

//    Henry Hunt

//    Sara Samuels

//    Abraham Adams

//    Nicole Norris

Шаблон регулярного выражения (Mr\.? |Mrs\.? |Miss |Ms\.? ) совпадает с любым вхождением "Mr ", "Mr. " , "Mrs ", "Mrs. " , "Miss ", "Ms или "Ms. " . Вызов метода Regex.Replaceприведет к замене найденных при сопоставлении подстрок на String.Empty; другими словами, найденная подстрока удаляется из исходной строки.

Пример 2. Определение повторяющихся слов

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

using System;

using System.Text.RegularExpressions;

public class Class1

{

  public static void Main()

  {

     string pattern = @"\b(\w+?)\s\1\b";

     string input = "This this is a nice day. What about this? This tastes good. I saw a a dog.";

     foreach (Match match in Regex.Matches(input, pattern, RegexOptions.IgnoreCase))

        Console.WriteLine("{0} (duplicates '{1})' at position {2}",

                          match.Value, match.Groups[1].Value, match.Index);

  }

}

// The example displays the following output:

//       This this (duplicates 'This)' at position 0

//       a a (duplicates 'a)' at position 66

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

Следующая конструкция группирования захватывает соответствующую часть выражения:

(часть_выражения)

где часть выражения — это любой допустимый шаблон регулярного выражения. Записывает, что использование скобок нумеруется автоматически слева направо, основываясь на порядке открывающих скобок в регулярном выражении, начиная с 1. Захват с номером 0 – это текст, соответствующий всему шаблону регулярного выражения.

Можно получить доступ к группам записи следующими способами:

  1.  С помощью конструкции обратной ссылки в регулярном выражении. Для ссылки на соответствующую часть выражения в том же регулярном выражении используется синтаксис \номер, где номер – это порядковый номер захваченной части выражения.
  2.  С помощью конструкции именованной обратной ссылки в регулярном выражении. Для ссылки на соответствующую часть выражения в том же регулярном выражении используется синтаксис \k<номер>, где номер – это порядковый номер захваченной части выражения. Захваченная часть выражения получает имя по умолчанию, идентичное ее порядковому номеру. Дополнительные сведения см. в разделе Именованные соответствующие части выражений.

В следующем примере приводится регулярное выражение, которое определяет повторяющиеся слова в тексте.

using System;

using System.Text.RegularExpressions;

public class Example

{

  public static void Main()

  {

     string pattern = @"(\w+)\s(\1)";

     string input = "He said that that was the the correct answer.";

     foreach (Match match in Regex.Matches(input, pattern, RegexOptions.IgnoreCase))

        Console.WriteLine("Duplicate '{0}' found at positions {1} and {2}.",

                          match.Groups[1].Value, match.Groups[1].Index, match.Groups[2].Index);

  }

}

// The example displays the following output:

//       Duplicate 'that' found at positions 8 and 13.

//       Duplicate 'the' found at positions 22 and 26.

Шаблон регулярного выражения определяется следующим образом:

(\w+)\s(\1)\W

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

Шаблон

Описание

(\w+)

Совпадение с одним или несколькими символами слова. Это первая группа записи.

\s

Соответствует пробелу.

(\1)

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

\W

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

Литература:

  1.  Павловская Т.А. С#. Регулярные выражения 355 – 365 стр.;
  2.  статья «Объектная модель регулярных выражений»;
  3.  C# - лекции IntUit (Биллиг В.А.). Лекция 15: Регулярные выражения.
  4.  http://regexpres.narod.ru/calculator.html - конструктор регулярных выражений

 

А также другие работы, которые могут Вас заинтересовать

27534. Приведите примеры юридических фактов-действий 30 KB
  Юридический факт конкретные социальные обстоятельства события действия вызывающие в соответствии с нормами права наступление определенных правовых последствий возникновение изменение или прекращение правовых отношений. Классификация: 1 по характеру наступающих последствий: а правообразующие поступление в вуз; б прамоприменяющие перевод с очной формы на заочную; в правопрекращающие окончание вуза; 2 по связи с волей участников правоотношений: а события обстоятельства независящие от воли субъекта стихийное бедствие...
27535. Принципы права: понятие, классификация и значение 28 KB
  Принципы права исходные нормативноруководящие начала императивные требования определяющие общую направленность правового регулирования общественных отношений. Принципы права обусловлены рядом факторов: уровень экономического развития; особенности политической системы; социальноклассовые природы государства. Принципы российского права: 1 принцип справедливости; 2 принцип равноправия равенство перед законом и судом; 3 единство прав и обязанностей; 4 гуманизм основан на уважении человека его достоинства и прав; 5...
27536. Проиллюстрируйте соотношение норм права и статьи закона на примере ст.8.13 КоАП РФ 30 KB
  Соотношение между статьей и нормой во многом зависит оттого что перед нами логическая норма или норма предписание. Если это норма предписание то она полностью содержится в статье. В одной статье может содержаться две или более нормы предписания. Логическая норма может находиться в составе трех ее элементов и одной целой статье но тогда диспозицию или санкцию нужно выводить в статье логическим путем.
27537. Публичная (политическая власть) признак государства 23.5 KB
  Имеется в виду то что: 1 государство является властью которая не сливается с обществом а выделяется из него будучи относительно самостоятельной по отношению к обществу в определенном смысле над ним; 2 государственная власть внешне и официально представляет все общество выступает в качестве особого органа управления обществом; 3 эта власть призвана обеспечить поддержание правопорядка нормальной жизнедеятельности людей; 4 публичная власть как разновидность политической власти означает наличие у нее особого аппарата включающего...
27538. Разделение власти как принцип организации деятельности правового государства 27 KB
  Правовое государство можно определить как организацию политической власти в обществе основанную на верховенстве правового закона. Государство возлагает на граждан юридические обязанности запрещая совершать противоправные и обязывая совершать правомерные действия и в случае их неисполнения привлекает их к юридической ответственности. В свою очередь государство приобретая ряд монопольных прав на правотворчество на применение государственного принуждения на сбор налогов на эмиссию денежных знаков и др. Государство должно не просто...
27539. Рассмотрите отличия государственной власти от власти общественной 28 KB
  Рассмотрите отличия государственной власти от власти общественной. Таким образом можно выделить две основные особенности общественной власти характерные для первобытнообщинного строя: 1. Главными органами власти являлись: род собрание старейшина при необходимости военачальник. Эта власть по существу сливалась с населением так как не существовало разграничения между субъектом и объектом власти общество одновременно было и объектом и субъектом власти.
27540. Рассмотрите соотношение права и религиозных норм 29.5 KB
  Рассмотрите соотношение права и религиозных норм. Сходство норм права и религиозных норм имеет практически те же черты что и сходство норм права и норм морали и выражается в нормативности совокупность определенных норм являющихся образцом масштабом поведения людей универсальности эти нормы распространяются на общественные отношения общности права и религии в нормативноценностных критериях правомерного и неправомерного. В настоящее время принято выделять семьи религиозного права где в качестве основных источников права выступают...
27541. Система права: понятие и основные элементы 31 KB
  Система права: понятие и основные элементы. Система права явление объективное хотя оно и находит свое проявление вовне через деятельность законодателя. Структура права предопределена в конечном счете характером общественных отношений на том или ином этапе общественного развития. Таким образом система права это внутреннее строение права деление его на отрасли подотрасли и правовые институты в соответствии с предметом и методом правового регулирования.
27542. Соотношение инкорпорации, кодификации и консолидации 29.5 KB
  Систематизация нормативно-правовых актов это их упорядочение приведение в единую более или менее сложную систему. Особенности систематизационной деятельности: сопоставляются и анализируются изданные в разное время действующие акты; 2 выявляются имеющиеся противоречия в содержании правовых норм пробелы в праве множественность актов посвященных одним и тем же вопросам обнаруживаются устаревшие нормы действие которых перекрыто актами изданными позднее; 3 подготавливаются проекты новых актов предложения об изменении и дополнении...