Лістинг 5.2. Конструкції шаблонів.

$s = "1+2-3*4";

if ($s =~ /(\d)(?=-)/) # Знайти цифру за якою варто '-'

{ print "$1\n"; # Результат '2'

}

else { print "помилка поиска\n";}

$s = "1+2-3*4";

if ($s =~ /(\d)(?!\+)/) # Знайти цифру за якою не варто '+'

{ print "$1\n"; # Результат '2'

}

else { print "помилка поиска\n";}

Правила регулярного вираз. (regex)

1. Будь-який символ позначає себе самого, якщо це не метасимвол. Якщо вам потрібно відмінити дію метасимвола, то поставте перед ним '\'.

2. Рядок символів позначає рядок цих символів.

3. Безліч можливих символів (клас) полягає в квадратні дужки '[]', це означає, що в даному місці може стояти один з вказаних в дужках символів. Якщо перший символ в дужках це '^' - значить, жоден з вказаних символів не може стояти в даному місці вираз. Усередині класу можна вживати символ '-', що позначає діапазон символів. Наприклад, а-z - одна з малих букв латинського алфавіту, 0-9 - цифра.

4. Всі символи, включаючи спеціальні, можна позначати за допомогою '\' як в мові С.

5. Альтернативні послідовності розділяються символом '|' Відмітьте що усередині квадратних дужок це звичайний символ.

6. Усередині регулярного вираз можна вказувати "підшаблони" беручи їх в круглих дужок і посилатися на них як '\номер' Перша дужка позначається як '\1'.

Оператори і пріоритети.

У Perl асоціативність і пріоритетність операторів аналогічна мові С. Ніже перераховані всі оператори в порядку зменшення пріоритету з вказівкою асоціативності.

ассоц. оператори
ліва терми і лівобічні спискові оператори
ліва ->
- ++ --
права **
права ! ~ \ унарні + і -
ліва =~ !~
ліва * / % x
ліва + - .
ліва << >>
- іменовані унарні оператори
- < > <= >= lt gt le ge
- == != <=> eq ne cmp
ліва &
ліва | ^
ліва &&
ліва ||
- ..
права ?:
права = += -= *= і так далі
ліва , =>
- правосторонні спискові оператори
ліва not
ліва and
ліва or xor

Терми і лівобічні спискові оператори.Будь-який терм має найвищий пріоритет. До терма відносяться змінні, лапки і їх оператори, арифметичні і логічні вирази в дужках, будь-які функції з параметрами в дужках. Фактично таких функцій немає, оскільки це просто унарні і спискові оператори. Просто вони поводяться подібно до функцій з параметрами в дужках. Якщо після будь-якого спискового оператора (print(), і так далі) або унарного оператора (chdir(), і так далі) слідує ліва кругла дужка, то оператори усередині дужок мають найвищий пріоритет. Так само як і звичайні функції.

Якщо дужки відсутні, то пріоритет спискових операторів або найвищий або найменший відносно операторів справа або зліва від нього:

@i = ('а ','b ', print 'з ', 'd ');

print "\n",@i,"\n"; #Результат: з d і а b 1

Тут ми маємо спискового оператора print. Для ком зліва від нього він має найменший пріоритет, але підвищує пріоритет правої коми. Тому права кома сприймається як параметр для print і друкується 'з d', а ліва просто записує код завершення операції в масив @i і останній print показує це.

Оператор '->'Як і в З - це інфіксний оператор переадресації. Якщо праворуч від нього стоїть [...] або {...} вираз, то права частина може бути безпосереднім або символічним посиланням на масив або хеш-кодування. Інакше права сторона це метод або простий скаляр, що містить ім'я методу, а права - або об'єкт, або ім'я класу.

Оператори ++ (інкремент) і -- (декремент). Працюють, як і в С. Якщо оператор - перед змінною, то значення змінної змінюється на 1 і набутого значення використовується. Якщо після - те її величина змінюється після вживання. Вживання інкремента до строкових змінних в Perl має особливість. Кожен символ залишається в своєму класі (великі, малі, цифри) і враховується перенесення попереднього символу. Таким чином, строкові змінні з цифрами працюють як числові змінні:

print ++($i = "09"); # Результат "10"

print ++($i = "a9"); # "b0"

print ++($i = "az"); # "ba"

print ++($i = "aZ"); # "bA"

Оператор ** (піднесення до ступеня):

print 4**2 # Результат 16

print -4**2 # Результат -16 тобто -(4**2)

Унарні оператори.

'!' - логічне заперечення
'-' - арифметичний мінус
'~' - побітная інверсія (доповнення до 1)
'+' - арифметичний плюс
'\' - здобуття посилання на змінну (як & у З)

Оператори "прив'язки" =~ і !=.Ці оригінальні оператори мають дуже широке вживання в Perl. Оператор =~ логічно пов'язує ліву частину вираз з патерном (pattern - зразок, шаблон) в правій. За замовчуванням пошук або зміна по патерну виконується в змінній $_. Оператори прив'язки дозволяють робити це з будь-якою змінною, вказаною в лівій частині. Логічним результатом буде успіх операції. Якщо в правій частині замість патерна присутнє вираз, то результат цього виразу сприймається як патерн. Проте це не дуже ефективно, оскільки патерн компілюватиметься під час виконання програми, що помітно понизить швидкодію. Оператор != аналогічний =~, лише результат збігу інвертується (логічне "ні").








Дата добавления: 2016-04-02; просмотров: 556;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.