Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пиппец 2.doc
Скачиваний:
107
Добавлен:
07.06.2015
Размер:
3.16 Mб
Скачать

53. Язык регулярных выражений и его применение, шаблоны имен файлов

Регулярное выражение- строка, содержащая спец.символы, интерпретация к-ых такова, что одному рег.выражению может соответствовать целый класс строк опред.структуры. Набор утилит Unix включает редактор sed и утилиту grep, которые используют рег.выражения. Любой обычный символ, например ‘f’, явл-ся атомарным рег.выражением, такому атомарному выражению соответствует подстрока ‘f’.

Символы, которые может содержать рег.выражение:

1)символы-заместители(замещают собой некоторую группу символов):

а). – замещает любой 1символ (например: а.с-регулярное выражение, abc – соответствует, ac – не соответствует, abdc – не соответствует);

б)[] – может находиться перечисление(один из символов в скобках). Например: a[b-f]c – регулярное выражение, abc – соответствует рег.выражению, acc – соответствует, agc – не соответствует, a1c – не соответствует.

в)[^…] – символ внутри является отрицанием, набор символов за ^ является недопустимым. Например: a[^0-9]c – регулярное выражение, abc – соответствует, acc – соответствует, agc – соответствует, a1c – не соответствует.

г)-(дефис) – для мн-ва задает диапазон. Например: [a-zA-Z]-рег.выр-ие, этому р.в. соотв-ет подстрока, сод-ая любой лат.символ.

2)Символы – квантификаторы(повторители):

а)* – "множитель" (задает допустимое число повторений символа перед *(от 0 и до допустимого числа). Например: a*c – регулярное выражение, c – соответствует, ac – соответствует, aac – соответствует, abc – нет.

б).* - любая подстрока любой длины.

в){минимум, максимум} – интервал-повторитель, ставится после атомарного выражения и задает диапазон повторения соотв.строк. Например: (he){2,4}-рег.выражение, ему соотв-ет hehe, hehehe, hehehehe.

Если выражение заключено в круглые скобки, то оно принимает атомарность

г)? – символ-повторитель, допустимое число повторений 0,1

3)позиционирующие символы – определяют нек.фиксированные цепочки, которые привязываются к строке(они описывают положение цепочки в строке):

а)^ – цепочка в начале строки. Например: ^a*c – регулярное выражение, abc – не соотв-ет(ни одна последовательность не находится в начале строки), а – не соотв-ет, c – соотв-ет, ааас56 – соотв-ет.

б)$ – конец строки, этому р.в. соотв-ют все подстроки, стоящие в конце строки.

Поиск в ОС Unix осущ-ся утилитами:

-fgrep – не исп-ет р.в.

-grep – интерпретирует 1-ый пар-р как базовое р.в. и выдает строки, которые сод-ат подстроку, соотв-ую этому р.в.

egrep-работает с расширенными р.в.

Возвр.значение: 0-образец найден, 1-образец не найден, 2-ошибка

Пример: $ grep ^Please *.txt – ищет во всех текстовых файлах подстроки, которые начинаются со слова Please.

Потоковый редактор sed явл-ся текст.редактором, выполняющим операции редактирования в ком.режиме. Вызов осущ-ся в соответствии с форматом:

$ sed ‘command’ [files]

Команда подстановки записывается в след.виде:

[addr1[,addr2]]s/expression/substitute/[flags] – обрабатывает строки из заданного диапазона, заменяя в каждой строке первое вхождение последовательности, соответствующей р.в. expression на посл-ть substitute.

Пример:

$ sed ‘/10,40/s[Pp]etrov/IvanD.Petrov/g’ oldfile > newfile

Работаем с файлом oldfile, результаты перенаправляем в файл newfile. Изменения производятся с 10 по 40 строку файла, меняем petrov и Petrov на IvanD.Petrov. ключ g осущетсвляет глоб.замену всех вхождений.

Шаблоны файлов:

*

?-1 любой символ

[]-наборы символов

Например: ch[gmo]?? – после-ть будет из 5 символов.

В квадратных скобках также может указываться диапазон.