- Удаляем комментарии и пустые строки из файла на Linux
- Что такое комментарии в программировании?
- Вывод содержимого файлов без комментариев и пустых строк на Linux
- Удаление комментариев и пустых строк в файле на Linux
- Как удалить комментарии из нескольких файлов
- Регулярные выражения Linux
- Регулярные выражения Linux
- Примеры использования регулярных выражений
- Выводы
- Регулярное выражение для удаления комментариев из сценария Bash
- 3 ответов
- просто для удовольствия .
- Кунг-фу стиля Linux: регулярные выражения
- Программы, в которых используются регулярные выражения
- Поиск строк по шаблонам и классы
- ▍Точка — это универсальный символ
- ▍Экранирование символов
- ▍Классы символов
- Повторы
- ▍Продвинутое описание повторов
- ▍В разных программах обработка повторов различается
- Привязка шаблона к началу и к концу строки
- Группировка
- В чём польза регулярных выражений? Зачем их изучать?
- Варианты регулярных выражений
- Инструменты для отладки регулярных выражений
Удаляем комментарии и пустые строки из файла на Linux
Удаляем комментарии и пустые строки из файла на Linux. При редактировании каких-либо конфигурационных файлов, в них присутствуют закомментированные и пустые строки — это не очень удобно (по крайней мере для чтения). Файлы можно отредактировать вручную, если в нем несколько закомментированных и пустых строк, но если файл имеет тысячи таких строк, это трудно сделать вручную. Сегодня в статье научимся избавляться от лишних пустых и закомментированных строк в файле.
Что такое комментарии в программировании?
Если вы загляните в исходный код или файл конфигурации, вы заметите, что многие строки начинаются со звездочки «*», косой черты «/», или хеша «#», или точки с запятой «;».
Эти строки известны как Комментарии.
В программировании комментарий — это удобочитаемое описание или аннотация, используемая для пояснения целей фрагментов кода.
Они помогают пользователям и другим программистам легко понять, что делает код.
Как правило, комментарии и пустые строки будут игнорироваться компиляторами и интерпретаторами. Они предназначены только для программистов.
Синтаксис комментариев варьируется в зависимости от языка программирования.
Теперь давайте посмотрим, как исключить или пропустить эти комментарии и пустые строки и отображать только те строки, которые не закомментированы.
Вывод содержимого файлов без комментариев и пустых строк на Linux
Позвольте мне показать вам содержимое файла sources.list в одной из моих систем Ubuntu:
Вы видите, что многие строки закомментированы символом «#». Это делает файл неудобным для чтения. Это небольшой файл, так что это не страшно.Но когда вы читаете очень длинные файлы конфигурации, например, «httpd.conf» или «php.ini», вам придется пройти через множество комментариев и пустых строк, и будет немного сложно найти, какие строки активны, а какие нет.Чтобы отфильтровать все комментарии и пустые строки от отображения в выводе файла, используйте команду grep, как показано ниже:
- первый символ ^ обозначает начало строки в данном файле, т.е. /etc/apt/sources.list.
- [^ # * /;] — все строки начинаются с любых символов, кроме этих четырех символов «#», «*», «/», «;». Другими словами, все строки, начинающиеся с символов «#», «*», «/», «;» будут исключены из вывода.
Пример вывода вышеуказанной команды:
Все комментарии и пустые строки исчезли.
Теперь вывод вполне читабелен.Я предпочитаю способом через grep фильтровать ненужные строки, отображаемые в выводе. Вы также можете сделать это с помощью команд awk и sed.
Удаление комментариев и пустых строк в файле на Linux
Давайте теперь отредактируем файл чтобы в нем не оставалось закомментированных строк.
Можно и такой командой:
Как удалить комментарии из нескольких файлов
find -name ‘*.c’ | xargs sed -i ‘0,/^*\/$/d’
Если есть вопросы, то пишем в комментариях.
Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.
Источник
Регулярные выражения Linux
Регулярные выражения — это очень мощный инструмент для поиска текста по шаблону, обработки и изменения строк, который можно применять для решения множества задач. Вот основные из них:
- Проверка ввода текста;
- Поиск и замена текста в файле;
- Пакетное переименование файлов;
- Взаимодействие с сервисами, таким как Apache;
- Проверка строки на соответствие шаблону.
Это далеко не полный список, регулярные выражения позволяют делать намного больше. Но для новых пользователей они могут показаться слишком сложными, поскольку для их формирования используется специальный язык. Но учитывая предоставляемые возможности, регулярные выражения Linux должен знать и уметь использовать каждый системный администратор.
В этой статье мы рассмотрим регулярные выражения bash для начинающих, чтобы вы смогли разобраться со всеми возможностями этого инструмента.
Регулярные выражения Linux
В регулярных выражениях могут использоваться два типа символов:
Обычные символы — это буквы, цифры и знаки препинания, из которых состоят любые строки. Все тексты состоят из букв и вы можете использовать их в регулярных выражениях для поиска нужной позиции в тексте.
Метасимволы — это кое-что другое, именно они дают силу регулярным выражениям. С помощью метасимволов вы можете сделать намного больше чем поиск одного символа. Вы можете искать комбинации символов, использовать динамическое их количество и выбирать диапазоны. Все спецсимволы можно разделить на два типа, это символы замены, которые заменяют собой обычные символы, или операторы, которые указывают сколько раз может повторяться символ. Синтаксис регулярного выражения будет выглядеть таким образом:
обычный_символ спецсимвол_оператор
спецсимвол_замены спецсимвол_оператор
Если оператор не указать, то будет считаться, что символ обязательно должен встретится в строке один раз. Таких конструкций может быть много. Вот основные метасимволы, которые используют регулярные выражения bash:
- \ — с обратной косой черты начинаются буквенные спецсимволы, а также он используется если нужно использовать спецсимвол в виде какого-либо знака препинания;
- ^ — указывает на начало строки;
- $ — указывает на конец строки;
- * — указывает, что предыдущий символ может повторяться 0 или больше раз;
- + — указывает, что предыдущий символ должен повторится больше один или больше раз;
- ? — предыдущий символ может встречаться ноль или один раз;
- — указывает сколько раз (n) нужно повторить предыдущий символ;
- — предыдущий символ может повторяться от N до n раз;
- . — любой символ кроме перевода строки;
- [az] — любой символ, указанный в скобках;
- х|у — символ x или символ y;
- [^az] — любой символ, кроме тех, что указаны в скобках;
- [a-z] — любой символ из указанного диапазона;
- [^a-z] — любой символ, которого нет в диапазоне;
- \b — обозначает границу слова с пробелом;
- \B — обозначает что символ должен быть внутри слова, например, ux совпадет с uxb или tuxedo, но не совпадет с Linux;
- \d — означает, что символ — цифра;
- \D — нецифровой символ;
- \n — символ перевода строки;
- \s — один из символов пробела, пробел, табуляция и так далее;
- \S — любой символ кроме пробела;
- \t — символ табуляции;
- \v — символ вертикальной табуляции;
- \w — любой буквенный символ, включая подчеркивание;
- \W — любой буквенный символ, кроме подчеркивания;
- \uXXX — символ Unicdoe.
Важно отметить, что перед буквенными спецсимволами нужно использовать косую черту, чтобы указать, что дальше идет спецсимвол. Правильно и обратное, если вы хотите использовать спецсимвол, который применяется без косой черты в качестве обычного символа, то вам придется добавить косую черту.
Например, вы хотите найти в тексте строку 1+ 2=3. Если вы используете эту строку в качестве регулярного выражения, то ничего не найдете, потому что система интерпретирует плюс как спецсимвол, который сообщает, что предыдущая единица должна повториться один или больше раз. Поэтому его нужно экранировать: 1 \+ 2 = 3. Без экранирования наше регулярное выражение соответствовало бы только строке 11=3 или 111=3 и так далее. Перед равно черту ставить не нужно, потому что это не спецсимвол.
Примеры использования регулярных выражений
Теперь, когда мы рассмотрели основы и вы знаете как все работает, осталось закрепить полученные знания про регулярные выражения linux grep на практике. Два очень полезные спецсимвола — это ^ и $, которые обозначают начало и конец строки. Например, мы хотим получить всех пользователей, зарегистрированных в нашей системе, имя которых начинается на s. Тогда можно применить регулярное выражение «^s». Вы можете использовать команду egrep:
egrep «^s» /etc/passwd
Если мы хотим отбирать строки по последнему символу в строке, что для этого можно использовать $. Например, выберем всех системных пользователей, без оболочки, записи о таких пользователях заканчиваются на false:
egrep «false$» /etc/passwd
Чтобы вывести имена пользователей, которые начинаются на s или d используйте такое выражение:
egrep «^[sd]» /etc/passwd
Такой же результат можно получить, использовав символ «|». Первый вариант более пригоден для диапазонов, а второй чаще применяется для обычных или/или:
egrep «^[s|d]» /etc/passwd
Теперь давайте выберем всех пользователей, длина имени которых составляет не три символа. Имя пользователя завершается двоеточием. Мы можем сказать, что оно может содержать любой буквенный символ, который должен быть повторен три раза, перед двоеточием:
egrep «^\w<3>:» /etc/passwd
Выводы
В этой статье мы рассмотрели регулярные выражения Linux, но это были только самые основы. Если копнуть чуть глубже, вы найдете что с помощью этого инструмента можно делать намного больше интересных вещей. Время, потраченное на освоение регулярных выражений, однозначно будет стоить того.
На завершение лекция от Яндекса про регулярные выражения:
Источник
Регулярное выражение для удаления комментариев из сценария Bash
это обманчиво сложным. Мне нужно регулярное выражение для удаления комментариев из сценариев оболочки Bash.
имейте в виду, что $# , $ <#foo>, string=»this # string» , string=’that # string’ , $
все допустимые выражения оболочки, которые должны не быть зачищены.
Edit: Обратите внимание, что:
Edit: Обратите внимание, что строки, которые могут быть неправильно истолкованы как комментарии, могут быть заправлены внутри HEREDOCs, но поскольку он многострочный, я могу жить без обработки / учета этого:
3 ответов
вы не можете сделать это с помощью регулярных выражений.
вам нужно сопоставить вложенные фигурные скобки. Регулярные выражения не могут этого сделать, если вы не хотите рассматривать pcres «регулярные выражения», в этом случае было бы проще просто написать парсер в Perl.
просто для удовольствия .
Я не верю, что вы можете сделать это без использования/реализации парсера, но это интересно, как далеко вы можете получить без этого.
ближе всего я получил, чтобы использовать простой regex С sed. Он сохраняет хэш-взрыв, который является определенным, но не может справиться с HEREDOC. Вы могли бы пойти дальше, но тогда это больше не будет весело.
пример сценария bash (называется doit)
но, очевидно, есть пустые строки, которые вы не хотите, и он не обрабатывает здесь документы.
опять же, не серьезное предложение, но, пожалуйста, поиграйте с ним.
отредактировано: я признаю это! sed не будет работать по причинам, приведенным в комментариях — sed не обрабатывает lookaheads/lookbehinds. Спасибо, что указали на это!
Я думал, что комментарий в bash-это строка, которая начинается с #. Если это так, вот ваше регулярное выражение:
и вот команда sed, которая их разденет:
отредактировано с учетом комментариев downvoter: ie
- разрешить пробелы перед # using \s*
- исключить строки ! после # с помощью отрицательного lookahead (. )
Источник
Кунг-фу стиля Linux: регулярные выражения
Если вы считаете, что умеете готовить, то может, вы знаете о том, как сделать суфле или пахлаву, а может — и не знаете. Но есть кое-что такое, чему вы, вероятно, научились, просто готовя разные блюда. Например, вы, скорее всего, можете вскипятить воду, можете правильно разбить яйцо, можете поджарить мясо. Если говорить о работе в Linux или Unix, то тут тоже можно сделать похожие наблюдения. Возможно, вы не знаете о том, как установить сервер Wayland, или о том, как написать модуль ядра. Но есть определённые базовые навыки, вроде работы с файлами или редактирования текстов, которые люди осваивают независимо от того, чем они занимаются, навыки, которые помогают им в самых разных ситуациях. Один из навыков, полезных в самых разных ситуациях, овладение которым часто вызывает определённые сложности, это — умение пользоваться регулярными выражениями. Многие программы используют их в качестве средства описания шаблонов поиска чего-либо. Обычно — для поиска данных в строках, например — в файлах с каким-то текстом.
Если вы не очень хорошо умеете пользоваться регулярными выражениями, знайте, что это легко исправить. Их не так уж и сложно изучить, кроме того — существуют замечательные инструменты, которые способны помочь при работе с регулярными выражениями. Сами регулярные выражения используются во многих утилитах. При этом везде используются одни и те же базовые синтаксические конструкции регулярных выражений. Источником путаницы, правда, являются особенности устройства регулярных выражений в разных средах. То, что выходит за рамки базовых синтаксических конструкций, в разных местах может различаться.
Разберём основы регулярных выражений, то, что нужно для того, чтобы хорошо их понимать и эффективно использовать.
Программы, в которых используются регулярные выражения
Возможно, первая программа, о которой вспоминают, когда говорят о регулярных выражениях, это — grep. Это — простая утилита, которая принимает регулярное выражение и имя файла (или несколько имён). Источником данных для неё может служить и стандартный поток ввода. В обычном режиме работы эта утилита выводит строки, в которых найдено совпадение с регулярным выражением. Это — простая, но мощная программа, она является одним из популярнейших инструментов командной строки. Именно поэтому я и решил построить примеры к этой статье на её основе.
Но grep — это далеко не единственная программа, использующая регулярные выражения. Среди других программ, в которых применяются регулярные выражения, можно отметить awk, sed, perl, разные редакторы, вроде Vim и emacs. Этот список можно продолжать ещё очень долго. Столь широкая распространённость регулярных выражений ведёт к тому, что их можно увидеть, например, в неких настройках программ, они встречаются даже в веб-приложениях, где используются для расширения возможностей этих приложений.
В различных системах может присутствовать не только grep, но и другие, похожие утилиты, вроде egrep. Например, в моей системе имеется команда egrep, которая представляет собой «обёртку» вокруг grep. Она вызывает grep с передачей этой утилите опции командной строки -E , что воздействует на вид регулярных выражений, с которыми работает grep. В результате тут я, если не отмечено иное, буду говорить именно о egrep.
Поиск строк по шаблонам и классы
Взгляните на следующий пример:
Эта команда просмотрит файл somefile.txt и найдёт следующие строки:
▍Точка — это универсальный символ
Строки со словом Dog при этом найдены не будут. Дело в том, что регулярные выражения, по умолчанию, чувствительны к регистру символов. Если бы этим все возможности регулярных выражений и ограничивались, тогда ничего особенно интересного в них бы не было. Но их возможности гораздо шире. Например, точка играет роль чего-то, напоминающего шаблон, соответствующий любому символу. Поэтому регулярное выражение d.g соответствует и строке dog , и строке dig (и, раз уж мы об этом говорим, строке d$g ).
▍Экранирование символов
Если точка — это «универсальный символ», то как тогда найти строки, в которых есть точка? Для этого можно воспользоваться экранированием символов с использованием обратной косой черты. Этот приём можно использовать в применении к любым специальным символам. В результате регулярное выражение d\.g найдёт строку d.g и ничего другого. Правда, тут стоит помнить о том, что символ обратной косой черты может иметь особый смысл в различных программах. Например, посмотрите на этот сеанс работы с egrep.
Использование обратной косой черты
Тут есть одна особенность. Оболочка интерпретирует последовательность символов \. как обычную точку. Она не считает обратную косую черту частью регулярного выражения, воспринимая её как экранирующий символ, используемый в самой оболочке. Для того чтобы, всё же, передать egrep конструкцию \. , нужно экранировать символ обратной косой черты ещё одним таким же символом ( \\ ). Именно это и сделано во втором примере. Экранирование специальных символов может оказаться непростой задачей, конкретные действия зависят от используемой оболочки. Если вы применяете bash, то вам, возможно, достаточно будет заключить регулярное выражение в одинарные или двойные кавычки. Но даже при таком подходе остаются актуальными правила, касающиеся обратной косой черты.
▍Классы символов
Иногда того, кто использует регулярные выражения, не интересует один заранее заданный символ. Но его при этом не устроит и поиск любого символа. В таких ситуациях в дело вступают классы символов. Например:
Эта команда найдёт строки вроде X000V и Z123V . Этот приём часто используют для того чтобы сделать поиск нечувствительным к регистру символов (например, используя конструкции вроде [aA] или [a-zA-Z] ).
Кроме того, можно описывать классы символов, которые не должны содержаться в искомых строках. Делается это с использованием символа ^ . Например, класс [^XYZ] соответствует любому символу кроме X , Y и Z . Если нужно найти тире ( — ), то этот знак должен идти в начале группы. А вот если нужно найти символ ^ — его не надо ставить в начало группы. Так как порядок символов в группе не играет роли при её обработке, проблем это не вызовет. В результате, например, если нас интересуют все цифры, а так же символы — и ^ , то соответствующее регулярное выражение будет выглядеть так:
Повторы
Мы уже знаем о том, как найти слова dog , dig , dug и d$g . Это очень хорошо, но лишь этим возможности регулярных выражений не ограничиваются. А именно, при использовании регулярных выражений можно описывать последовательности повторяющихся символов. Можно сделать и так, чтобы некий символ был бы необязательным. Например, вот регулярное выражение, которое найдёт и слово bar , и слово bear : be?ar .
Часто надо сделать так, чтобы некий шаблон мог бы присутствовать в находимых строках в одном экземпляре, но мог бы и полностью в них отсутствовать. Может понадобиться и поиск повторяющихся символов, а заодно и выявление их полного отсутствия. Иногда надо, чтобы регулярное выражение реагировало бы на нечто, имеющееся в строке в единственном экземпляре или повторяющееся несколько раз. Предположим, что нужно найти в файле некоего лога числа с десятичной точкой, перед которыми может присутствовать дефис, символизирующий знак «минус», а может и не присутствовать. В этой ситуации можно использовать конструкцию -?4+\.?5* . Для того чтобы лучше понимать подобные конструкции, полезным может оказаться представление их в виде диаграмм.
Графическое представление регулярного выражения (создано с помощью Regexper )
Этому шаблону будут соответствовать числа -25.2 , 33. , 17.125 . Знак + указывает на то, что в строке должна быть, как минимум, одна цифра, но их может быть и больше. Символ * соответствует любому количеству цифр, в том числе — и нулевому. Обратите внимание на то, что символ десятичной точки нуждается в экранировании. У этого регулярного выражения есть одна интересная особенность. Оно будет работать и без экранирования символа десятичной точки. Ведь точка соответствует любому символу. Но при таком подходе найдено будет и нечто вроде 14X2 , то есть, в нашем случае, неправильно оформленное число.
▍Продвинутое описание повторов
В более продвинутых регулярных выражениях для описания повторов можно пользоваться фигурными скобками, указывая в них то, сколько раз может повторяться шаблон. Некоторые инструменты требуют экранирования символов фигурных скобок. При работе с grep экранировать их не нужно. То есть, например, если нужно найти четыре буквы, записанные в нижнем регистре, можно воспользоваться конструкцией [a-z] <4>.
Безусловно, то же самое можно описать и так: [a-z][a-z][a-z][a-z] . Применение фигурных скобок лишь ускоряет ввод соответствующих конструкций. В фигурных скобках, кроме того, можно указывать диапазон количества повторов, задавая его нижнюю и верхнюю границы. Например — так: [a-z] <2,4>. Это соответствует последовательностям длиной от двух до четырёх символов. Это — то же самое, что и [a-z][a-z][a-z]?[a-z]? .
▍В разных программах обработка повторов различается
Для grep достаточно факта нахождения совпадения с регулярным выражением. При работе с некоторыми другими инструментами в расчёт принимается совпадение с наибольшим или наименьшим количеством символов. Например, регулярное выражение abc* , применённое к строке, содержащей abccccc , может обнаружить только символы ab , а может и найти совпадение со всей этой последовательностью символов. Это зависит от конкретного инструмента (и иногда — от настроек этого инструмента, например — от опций командной строки). Но об этом стоит помнить. Разные инструменты работают по-разному в деле обработки множественных совпадений. Например, при применении шаблона X к строке XyyX может быть найден только первый X , но могут быть найдены и оба символа. Но для grep, опять же, это значения не имеет. Этот инструмент интересует нахождение в строке хотя бы одного совпадения с регулярным выражением.
Привязка шаблона к началу и к концу строки
Возможно, вы обратили внимание на то, что в вышеприведённых примерах совпадение с шаблоном может быть найдено в любой части строки. Но, если нужно, можно привязать шаблон к началу строки, воспользовавшись символом ^ , или к концу строки — с помощью символа $ . Например, такая конструкция поможет найти пустые строки: ^ *$. А если нужно, чтобы подобные строки начинались бы с символа табуляции, можно поступить так: ^[ \t]*$ .
Последовательность \t , как и в языке C, означает знак табуляции. В зависимости от того, какой именно инструмент используется, в вашем распоряжении могут оказаться и другие особые символы. Вот, например, как искать строки, первым непробельным символом которых является % : ^[ \t]*% .
Группировка
Существует несколько способов группировки регулярных выражений. Можно использовать скобки (правда, некоторые инструменты требуют их экранирования при использовании их для группировки шаблонов). Вот пример:
Такое регулярное выражение будет искать строки, начинающиеся с буквы a , за которой идёт символ d или последовательность символов bcd .
Графическое представление регулярного выражения (создано с помощью Regexper )
Это — не то же самое, что ab?c?d , так как такое регулярное выражение отреагирует на последовательность символов acd . Кроме того, в регулярных выражениях можно использовать символ | , играющий роль оператора ИЛИ . Например, конструкция a|b найдёт символ a или символ b , что не особенно отличается от возможностей конструкции [ab] .
Но если объединить эту возможность с группировкой — может получиться нечто весьма полезное. Например, конструкция вида (dog)|(cat) способна найти и dog , и cat . В некоторых программах группировка способна помочь в выделении интересующих разработчика фрагментов кода, или может позволить выполнять продвинутую замену текстов. Например, в некоторых программах можно выполнить поиск с использованием регулярного выражения id=(8)+ , а в строке замены можно использовать конструкцию \1 для того чтобы сослаться на любое число, совпавшее с выражением, указанным в скобках. То, как именно это будет выглядеть, зависит от конкретной программы. Например, в некоторых программах может применяться нечто вроде &1 .
В чём польза регулярных выражений? Зачем их изучать?
О самих регулярных выражениях можно говорить ещё очень долго. Но сейчас давайте немного от них отвлечёмся и поговорим о том, какую пользу они могут принести тому, кто умеет с ними работать. Предположим, у нас имеется лог-файл, в котором содержится масса температурных данных в градусах Цельсия. В этом файле есть и другие данные. Но все температурные данные представлены в виде чисел, за которыми идёт пробел и буква C . В результате температурные показатели могут выглядеть, например, как -22 C и 13.5 C .
Преобразовать эти числа к необходимому виду можно с помощью чего-то вроде awk. Не хочу тут вдаваться в подробности об awk, отмечу лишь то, что тут имеется функция match и функция gensub , которая позволяет осуществлять поиск и замену строковых данных с использованием регулярных выражений. Кроме того, программа позволяет фильтровать строки с использованием правил, которые представляют собой регулярные выражения, ограниченные символами косой черты. Взгляните на этот код:
В первой строке кода осуществляется поиск текстов, содержащих пробел и букву C в конце строки. Подпрограмма match получает число в matchres[1] . При таком подходе она сочтёт подходящей и бессмыслицу вроде -…C , но мы можем предположить, что в наших данных ничего такого нет. Возможно, ситуацию улучшит использование такого регулярного выражения: -?9\.?8* (правда, обратите внимание на то, что для использования такого регулярного выражения с grep, из-за использования в его начале символа — , нужно будет воспользоваться опцией -e ). Преобразование выполняет функция gensub . Как видите, для решения задачи понадобилось немало знаний о регулярных выражениях.
Варианты регулярных выражений
К сожалению, между способами использования регулярных выражений существуют небольшие различия. Вот что однажды сказал по этому поводу Дональд Кнут: «Я определяю UNIX, как 30 определений регулярных выражений, живущих под одной крышей».
Я уже говорил о некоторых из этих различий. Например, некоторые реализации регулярных выражений воспринимают скобки как группировочные символы в том случае, если они не экранированы. А другие, при таком их использовании, требуют их экранировать. Иначе скобки будут восприниматься как обычные символы.
Часто в регулярных выражениях используются сокращённые конструкции для описания чего-то вроде цифр и пробельных символов. Это полезная возможность, так как она повышает переносимость регулярных выражений. Например, конструкция [:digit:] является заменой для 6 . В некоторых программах для той же цели используются особые управляющие символы, вроде \d . Здесь можно найти таблицу, в которой имеются описания распространённых систем регулярных выражений.
Инструменты для отладки регулярных выражений
Собственно говоря, это — всё, что нужно знать о регулярных выражениях для начала работы с ними. Если вы хотите отлаживать регулярные выражения в интерактивном режиме, то знайте, что существует множество хороших инструментов, направленных на решение этой задачи. Ещё можно строить схемы регулярных выражений. Это помогает лучше понимать их смысл.
Возможно, вам пригодится библиотека регулярных выражений, из которой можно, так сказать, что-нибудь позаимствовать. А если вы хотите изучать регулярные выражения в игровой форме — можете заглянуть сюда и сюда.
Пользуетесь ли вы регулярными выражениями, работая в Linux?
Источник