Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционные системы (2 семестр).docx
Скачиваний:
3
Добавлен:
12.11.2019
Размер:
193.38 Кб
Скачать

Базові регулярні вираження

Регулярні вираження являють собою мову опису текстових шаблонів. Регулярні вираження містять зразки символів, що входять у шукане текстове вираження, і конструкції, обумовлені спеціальними символами (метасимволами).

Метасимволы, використовувані в регулярних вираженнях

початок рядка

$

кінець рядка

[]

будь-який символ, укладений у квадратні дужки; щоб задати діапазон символів, у квадратних дужках вказуються через дефіс перший і останній символи діапазону

[]

будь-який символ, крім символів, заданих у квадратних дужках

.

будь-який окремий символ

\

скасовує спеціальне значення наступного за ним метасимвола

*

указує, що попередній шаблон зустрічається 0 або більш раз

\{n\}

указує, що попередній шаблон зустрічається рівно n раз

\{n,\}

указує, що попередній шаблон зустрічається не менш n раз

\{,n\}

указує, що попередній шаблон зустрічається не більш n раз

\{n,m\}

указує, що попередній шаблон зустрічається не менш n і не більш m раз

Приклади регулярних виражень

the

шукаються рядки, що починаються з буквосполучення "the"

be$

шукаються рядки, що закінчуються буквосполученням "be"

[Ss]igna[ll]

шукаються рядки, що містять буквосполучення: "signal", "Signal", "signal" або "Signal"

\.

шукаються рядки, що містять крапку

...th

шукаються рядки, що містять символи "th" в 4-й і 5-й позиціях

.*\{53\}th

шукаються рядки, що містять символи "th" в 54-й і 55-й позиціях

.*\{10,30\}th

шукаються рядки, що містять символи "th" у будь-яких позиціях між 11-й і 31-й

.....$

шукаються рядки, що полягають із 5 будь-яких символів

t.*e$

шукаються рядки, що починаються з букви "t", що й закінчуються буквою "e"

[0-9][a-z]

шукаються рядки, що містять комбінацію: цифра-прописна буква

Приклад виконання лабораторної роботи n3 Завдання 1

У файлі query2 вибрати всі рядки, у яких в адресі є вулиця ("ST.").

Розв'язок:

  1. Адреса у файлі query2 починається з 31-й позиції (див. структуру файлу). Тому потрібно насамперед пропустити 30 позицій від початку файлу, що можна зробити таким підвиразом: ".\{30\}" - 30 будь-яких символів від початку файлу.

  2. Вулиця позначається в адресі скороченням "ST.", і ця підстрока може стояти в адресі на будь-якому місці, тобто перед нею можуть бути й інші символи. Оскільки загальна довжина адреси - не більш 20 символів, перед підстрокой, яку ми шукаємо, може бути не більш 17 будь-яких символів, що визначається підвиразом: ".*\{0,17\}".

  3. Нарешті, слід указати підстрочкуу, яку ми шукаємо: "ST.". Оскільки в підстроку входить метасимвол "." (крапка), підвираз для пошуку входження буде мати вигляд: "ST\.".

  4. Підсумкове регулярне вираження:

  5. ".\{31\}.*\{0,17\}ST\."

  6. Протокол виконання:

Script started on Thu Sep 5 07:42:02 2002

bash2-2.05$ grep ".\{31\}.*\{0,17\}ST\." ../metod/query2

203:REBOUND SPORTS :2 E. 14TH ST. :NEW-YORK :NY:10009:5555989:10000

205:POINT GUARD :20 THURSTON ST. :YONKERS :NY:10956:5554766:3000

211:AT BAT :234 BEACHEM ST. :BROOKLINE :MA:02146:5557385:8000

212:ALL SPORT :1000 38TH ST. :BROOKLYN :NY:11210:5551739:6000

213:GOOD SPORT :400 46TH ST. :SUNNYSIDE :NY:11104:5553771:5000

214:AL'S PRO SHOP :45 SPRUCE ST. :SPRING :TX:77388:5555172:8000

223:VELO SPORTS :23 WHITE ST. :MALDEN :MA:02148:5554983:5000

228:FITNESS FIRST :5000 85TH ST. :JACKSON-HEIGHTS:NY:11372:5558710:4000

bash2-2.05$

Script done on Thu Sep 5 07:42:18 2002