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

Что такое регулярные выражения?

На самом деле, эта глава лишняя. Про регулярные выражения и так много написано... Впрочем, некоторые вещи остались нераскрытыми.

Регулярное выражение это обычная текстовая строка(pattern), которая используется для поиска в другой строке(buffer). Например такое регулярное выражение (далее RE): /Linux/. Если произвести поиск RE /Linux/ в строке "This is Linux!", то данное выражение будет найдено. Имеется два результата поиска:

  1. Позиция начала совпадения
  2. Позиция конца совпадения

Рисунок 1.2. Позиции совпадения RE.

Позиции совпадения RE.


Важно

Следует учесть, что позиция это место между символами.

Команда поиска и замены s.

Основной командой в sed является команда поиска и замены s. Это не удивительно: что ещё можно сделать с текстом? В принципе, все остальные команды sed являются вспомогательными инструментами, именно эта команда чаще всего используется, и имеет самое большое количество параметров и модификаторов.

Формат команды s довольно прост:

s/РЕГУЛЯРНОЕ_ВЫРАЖЕНИЕ_ДЛЯ_ПОИСКА/ВЫРАЖЕНИЕ_ДЛЯ_ЗАМЕНЫ/МОДИФИКАТОРЫ

Попробуем команду в действии:

sed 's/i/Z/' test.c

#Znclude <stdio.h>

/* comment */

Znt main()
{
prZntf("тестовый файл\n");
return 0;
}
				

Видно, что все первые буквы i меняются на Z.

Замечание

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

Заменять конечно можно не только буквы, но и целые слова. Имеются и подстановочные символы(вроде wildcard's командной строки). О всём этом в следующей главе.

Вы можете обсудить этот документ на форуме. Текст предоставляется по лицензии GNU Free Documentation License (Перевод лицензии GFDL).

Вы можете пожертвовать небольшую сумму яндекс-денег на счёт 41001666004238 для оплаты хостинга, интернета, и прочего. Это конечно добровольно, однако это намного улучшит данный документ (у меня будет больше времени для его улучшения). На самом деле, проект часто находится на грани закрытия, ибо никаких денег никогда не приносил, и приносить не будет. Вы можете мне помочь. Спасибо.