Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Розширені регулярні вирази. Метасимволи початку, кінця рядка та довільного символу. Вибір, пошук рядків, які містять декілька регулярних виразів




Регулярнийвираз - це зразок, який описує набір текстових ланцюжків.

Побудова регулярних виразів чимось схожа на побудову арифметичних

виразів у тому, що в них також використовуються різноманітні оператори

для поєднання менших виразів. Grep розуміє три дещо відмінні версії

синтаксису регулярних виразів, а саме: "basic", "extended" і "perl"

(базовий, розширений і Perl).

Існують основні (basic) і розширені (extended) регулярні вирази.

Зазвичай за замовчуванням програма вважає, що їй в якості аргументу

передано базовий регулярний вираз.

Спочатку розглянемо розширені регулярні вирази, після чого будуть

описані їх відмінності від базових. У розширених регулярних виразах

використовують символи з наступними значеннями:

• ^ - початок рядка

• $ - кінець рядка

• [a-z] - будь-який символ з діапазону

• [^a-z] - будь-який символ, за винятком символів з діапазону

• [abil] - будь-який символ з набору

• [ ^azx] - будь-який символ, за винятком символів з набору

•. - будь-який символ

• * - будь-яке число повторень символу, що стоїть перед *

• + - будь-яке ненульове число повторень символу, що стоїть перед +

•? - один символ, що стоїть перед?, чи порожній підрядок (нуль таких

символів)

• & - у виразі, що вказує підрядок, на який потрібно замінити знайдений,

означає повторення знайденого підрядка

Для полегшення задання діапазонів є означені класи символів з

назвами, що «говорять»:

‘[:alnum:]’

Буквено-цифрові символи: ‘[:alpha:]’ i ‘[:digit:]’.

‘[:alpha:]’

Азбучні символи: ‘[:lower:]’ i ‘[:upper:]’.

‘[:blank:]’

Символи пропуску: space i tab.

‘[:cntrl:]’

Символи, що управляють. У ascii, ці символи мають вісімкові коди 000 через 037,

і 177(DEL). У інших символьних множинах, вони - еквівалентні символи, якщо є.

(Control characters. In ascii, these characters have octal codes 000 through 037,

and 177 (DEL). In other character sets, these are the equivalent characters, if any.)

‘[:digit:]’

Цифри: 0 1 2 3 4 5 6 7 8 9.

‘[:graph:]’

Графічні символи: ‘[:alnum:]’ i ‘[:punct:]’.

‘[:lower:]’

Малі букви: a b c d e f g h i j k l m n o p q r s t u v w x y z.

‘[:print:]’

Придатні для друкування символи: ‘[:alnum:]’, ‘[:punct:]’, i space.

‘[:punct:]’

Символи пунктуації:! " # $ % & ’ () * +, -. /:; < = >? @ [ \ ] ^ _ ‘ { |

} ~.

‘[:space:]’

Пропуски: tab, newline, vertical tab, form feed, carriage return, and space.

‘[:upper:]’

Великі букви: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z.

‘[:xdigit:]’

Шістнадцяткові цифри: 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f.

Метасимволи

 

Всі регулярні вирази складаються із звичайних символів та метасимволів. В регулярних виразах метасимволи і звичайні символи, використовуються для досягнення бажаного результату. З іншого боку, якщо у регулярному виразі не використовуються метасимволи, то регулярний вираз перетворюється в «засіб простого пошуку». Це спеціальні символи.

Одними із найбільш простих метасимволів, є метасимвол ^ (кришка) і $ (долар). Ці метасимволи представляють початок і кінець рядка що підлягає перевірці. Метасимвол ^, фактично прив’язує слідуючу частину регулярного виразу до початку рядка.

Метасимвол «.» (крапка), являє собою скорочену форму запису символьного класу, що співпадає із будь-яким символом. Він використовується тоді, коли в декількох позиціях регулярного виразу може знаходитися будь-який символ.

Дуже зручний та корисний метасимвол «|», який означає «або». Цей метасимвол дозволяє об’єднати кілька регулярних виразів в одне, що буде співпадати із будь-яким із підвиразів з яких воно складається. Наприклад, Bob і Robert – два різних вирази, а вираз Bob|Robert – один регулярний вираз співпадаючий із будь-яким із цих рядків. Підвирази, об’єднанні даним способом, називаються альтернативами.

Давайте повернемося до нашого регулярного виразу tr[ae]y. Цікавим нюансом є той, що цей вираз можна записати як tray|trey і навіть tr(a|e)y. В останньому варіанті, круглі дужки відділяють конструкцію вибору від решти виразу (круглі дужки також являються метасимволами). У виразі tr(a|e)y круглі дужки нам необхідні, без них tra|ey буде означати tra або ey – це не те що нам потрібно. Конструкція вибору діє лише всередині круглих дужок.

Не плутайте конструкцію вибору із символьними класами. В символьних класах передбачається співпадання із одним символом цільового тексту. В конструкції вибору кожна альтернатива може бути повноцінним регулярним виразом.






Поделиться с друзьями:


Дата добавления: 2016-04-03; Мы поможем в написании ваших работ!; просмотров: 448 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

В моем словаре нет слова «невозможно». © Наполеон Бонапарт
==> читать все изречения...

2213 - | 2174 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.