Реализовать функцию сравнения с простым набором регулярных выражений и программу поиска вхождений соотв. выражений в файле или входном потоке (упрощенный аналог grep).
Минимальный набор регулярных выражений для реализации:
Одиночный символ:
c —           присутствует c -- конкретный символ набора ASCII[a-z] —  любой символ из диапазона символов (здесь от "a" до "z")[abd]  —   присутствует любой символ из списка (здесь a, b, d)[^abe] —  не является ни одним из символов списка (a, b, e).     —      любой символПоследовательность символов:
*      —    предыдущий одиночный символ символ повторяется любое число раз (или ни разу)+       —   предыдущий одиночный символ символ повторяется один или больше раз?        —  предыдущий одиночный символ символ повторяется один раз или ни разуОграничители:
^       —   начало строки$        — конец строкиДля использования "служебных" символов (\[.+*?$^\]) в виде "конкретного символа" перед ними нужно поставить символ исключения \, то же самое касается самого символа \.
Реализация других выражения из POSIX набора  ({m,n},\>,|< и проч.) приветствуется, но не обязательна.
Программа поиска ищет в файле/потоке строки, соответствующие рег. выражению и выводит их целиком с номером строки в файле (в потоке).
Пример:
abc соответствуют строки "abcd", "cabcab",выражению ^abc -- только первая "abcd".
выражению [a-z]a+ соответствуют строки "zaaaaaaaaaaaaa", "rkbaa"
выражению ^ +if[ ]*([^)]+)[ ]*{$ соответствуют:
"  if(a) {", "        if ( !x ){". При этом строка "        if ( !(x) ){" не соответствует.