Добро пожаловать в Перпендикулярный Мир, ТРАМБРОИД. Да прибудет с вами глупость!

Регулярные выражения в shell(bash), на примере использования sed.

Метасимволы подменяют собой какой-то один символ.

. точка.
Точка означает любой символ. Следует учесть, что символ всё-таки должен присутствовать, например RE /x.z/ будет найдено в строке "xyz", "x-z", "abcxRzdef", но не в строке "_xz_".
[abc] символьный класс.
на этом месте может быть только a, b, или c.
[0-9] символьный диапазон.
Под диапазон попадают все символы диапазона, здесь 0,1,2,3,4,5,6,7,8,9
[^xyz] класс исключения.
вместо этого метасимвола будет найден любой символ кроме x или y или z
\s Пробельные символы.
Здесь может быть пробел или табуляция, в много строчном режиме этот метасимвол так-же соответствует переводу строки
\S это любой не пробельный символ.
\w словообразующий символ
Эквивалентно [a-zA-Z0-9_]. Задаёт символы внутри слова
Кроме того, в русской локали и в кодировке UTF-8 с \w совпадают так-же русские буквы.
\W это не словообразующий символ.
\n перевод строки.
в обычном режиме работы sed, этот символ никогда не встречается в строке(иначе это не одна строка, а 2)
\oXXX Восьмеричное представление символа
\. Экранирование.
любой спецсимвол можно заэкранировать, если нам нужна к примеру именно точка, а не "любой символ". Существует 2 вида написания регэкспов, обычный, и расширенный(ERE). В дальнейшем я буду использовать только расширенный способ записи, так как он короче и понятнее. Что-бы sed работала в расширенном режиме необходима команда -r. ERE отличается от RE тем, что в ERE почти все спецсимволы не нужно экранировать слешем.
Пример:
Обычное(RE)
Код:
/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/

Расширенное(ERE)

Код:
/([0-9]{1,3}\.){3}[0-9]{1,3}/

\xzz любой символ в шестнадцатеричной записи. Например /\x21/ то-же что /!/

RSS       Написать письмо админу

Новые глупцы:

  • peter
  • Колян150
  • baloojan

Сейчас глупят:

Сейчас на сайте 0 пользователя и 1 гость.