
- •Интернет-программирование
- •ИП. РВ. Спецификации
- •ИП. РВ. Понятия
- •ИП. РВ. Подключение
- •ИП. РВ. Тестирование
- •ИП. РВ. Устройство шаблонов
- •ИП. РВ. Устройство шаблонов
- •ИП. РВ. Устройство шаблонов
- •ИП. РВ. Устройство шаблонов
- •ИП. РВ. Устройство шаблонов
- •ИП. РВ. Устройство шаблонов МИЭТ, 2017
- •ИП. РВ. Устройство шаблонов
- •ИП. РВ. Устройство шаблонов
- •ИП. РВ. Устройство шаблонов
- •ИП. РВ. Устройство шаблонов МИЭТ, 2017
- •ИП. РВ. Устройство шаблонов
- •ИП. РВ. Устройство шаблонов. Замены
- •ИП. РВ. Устройство шаблонов. Замены
- •ИП. РВ. Устройство шаблонов. Замены
- •ИП. РВ. Устройство шаблонов. Замены
- •ИП. РВ. Устройство шаблонов. Группы
- •ИП. РВ. Устройство шаблонов. Группы
- •ИП. РВ. Устройство шаблонов. Граничные метасимволы
- •ИП. РВ. Устройство шаблонов. Граничные метасимволы
- •ИП. РВ. Устройство шаблонов. Перечисления
- •ИП. РВ. Устройство шаблонов. Перечисления
- •ИП. РВ. Устройство шаблонов. Утверждения
- •ИП. РВ. Устройство шаблонов. Утверждения МИЭТ, 2017
- •ИП. РВ. Устройство шаблонов. Утверждения
- •ИП. РВ. Устройство шаблонов. Условия
- •ИП. Реализация РВ в Java. Возможности класса Pattern
- •ИП. Реализация РВ в Java. Возможности класса Pattern
- •ИП. Реализация РВ в Java. Возможности класса Matcher
- •ИП. Реализация РВ в PHP
- •ИП. Реализация РВ в PHP. Применение callback-функций
- •ИП. Реализация РВ в PHP. Применение callback-функций
- •ИП. Реализация РВ в PHP. Применение callback-функций
- •ИП. Реализация РВ в PHP. Применение callback-функций
- •ИП. Реализация РВ в PHP. Применение callback-функций
- •ИП. Реализация РВ в JavaScript
- •ИП. Реализация РВ в JavaScript. Примеры
ИП. РВ. Устройство шаблонов. Замены |
МИЭТ, 2017 |
Замена c использованием предыдущего совпадения на JavaScript
<script>
str = "The Miet\n\ris best vuz in Moscow"; alert(str.replace(/(M[^\s]+)/gim, "$1"+" (Zelenograd)")); /*
The Miet (Zelenograd)
is best vuz in Moscow (Zelenograd) */
</script>
ИП. РВ. Устройство шаблонов. Группы |
МИЭТ, 2017 |
Группы
Группы (capturing groups) позволяют трактовать последовательность символов как единое целое.
Все совпадения групп сохраняются в специальном массиве $ и нумеруются так: $0 — содержит все совпадение целиком
$1 — первое совпадение, $2 — второе и т. д.
Пример нумерования групп
Пусть найдено совпадение с шаблоном ((A)(B(C))), тогда массив $ содержит:
$0 - ((A)(B(C))) $1 - (A)
$2 - (B(C)) $3 - (C)
Исключение группы из массива результатов - (?:шаблон)
Запрет возврата назад по строке, если часть шаблона уже найдена - (?>шаблон)
ИП. РВ. Устройство шаблонов. Группы |
МИЭТ, 2017 |
Примеры замен с помощью групп
Введите шаблон
([1-3]+)0([4-6]+) Введите строку
0001230456000
Найден текст 1230456 позиция старта 3 позиция окончания 10
Введите строку или шаблон замены $20$1 Результат
0004560123000
Введите шаблон ([1-3]+)0([4-6]+) Введите строку
0001230456000
Найден текст 1230456 позиция старта 3 позиция окончания 10 Введите строку или шаблон замены $0
Результат
0001230456000

ИП. РВ. Устройство шаблонов. Граничные метасимволы |
МИЭТ, 2017 |
Граничные метасимволы
^ |
Начало строки |
$ |
Конец строки |
\b |
Граница слова |
\B |
Не граница слова |
\G |
Предыдущий успешный поиск |
ИП. РВ. Устройство шаблонов. Граничные метасимволы |
МИЭТ, 2017 |
Использование метасимвола $ |
|
Введите шаблон abc$ |
|
Введите строку abc abc abc |
|
Найден текст abc позиция старта 8 позиция окончания 11 |
|
Использование метасимвола ^ |
|
Введите шаблон ^abc |
|
Введите строку abc abc abc |
|
Найден текст abc позиция старта 0 позиция окончания 3 |
|
Использование метасимвола \b |
|
Введите шаблон abc\b |
|
Введите строку abc abcd abcd abc abc |
|
Найден текст abc позиция старта 0 позиция окончания 3 |
|
Найден текст abc позиция старта 14 позиция окончания 17 |
|
Найден текст abc позиция старта 18 позиция окончания 21 |
|
Введите шаблон a[^\b]+\b
Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 4
a[^\b]+\b
Использование метасимвола \s
Введите шаблон a[^\s]+\s Введите строку abc abc abc
Найден текст abc позиция старта 0 позиция окончания 4 Найден текст abc позиция старта 4 позиция окончания 8
ИП. РВ. Устройство шаблонов. Перечисления |
МИЭТ, 2017 |
Для определения перечислений используется вертикальная черта |. Для включения перечисления в выражение используются группы. По действию перечисления подобны условию «или»
Введите шаблон start|finish Введите строку
MIET start and no finish
Найден текст start позиция старта 5 позиция окончания 10 Найден текст finish позиция старта 18 позиция окончания 24
Пример использования перечисления в группе
Введите шаблон
\d+ (бухгалте|директо)р? Введите строку
84991001010 бухгалтер, 84992002020 менеджер, 84993003030 директор
Найден текст 84991001010 бухгалтер позиция старта 0 позиция
окончания 21 Найден текст 84993003030 директор позиция старта 45 позиция окончания 65
ИП. РВ. Устройство шаблонов. Перечисления |
МИЭТ, 2017 |
Более сложные примеры использования перечислений:
Введите шаблон студенты получат отличный|хороший зачет|экзамен Введите строку студенты получат отличный экзамен Найден текст студенты получат отличный позиция старта 0 позиция окончания 25
Найден текст экзамен позиция старта 26 позиция окончания 33
Введите шаблон студенты получат (отличный|хороший) (зачет|экзамен) Введите строку студенты получат отличный экзамен Найден текст студенты получат отличный экзамен позиция старта 0 позиция окончания 33
Введите шаблон студенты получат (отличный|хороший зачет|экзамен)
Введите строку студенты получат отличный экзамен Найден текст студенты получат отличный позиция старта 0 позиция
окончания 25
Исключение подвыражения из результатов с помощью ?:
Введите шаблон студенты получат ?:отличный|хороший зачет|экзамен
Введите строку студенты получат отличный экзамен Найден текст экзамен позиция старта 26 позиция окончания 33

ИП. РВ. Устройство шаблонов. Утверждения |
МИЭТ, 2017 |
Утверждения проверяют символы находящиеся до или после текущего символа.
Утверждения делятся на позитивные и негативные.
Позитивные принимают true при совпадении, а негативные при НЕ совпадении
Смотрящие вперед (вправо) утверждения задаются так: (?= или (?! Смотрящие назад (влево) утверждения задаются так: (?<= или (?<!
(?=шаблон) |
Позитивный просмотр вперед |
(?<=шаблон) |
Позитивный просмотр назад |
(?!шаблон) |
Негативный просмотр вперёд |
(?<!шаблон) |
Негативный просмотр назад |
ИП. РВ. Устройство шаблонов. Утверждения МИЭТ, 2017
Примеры использования утверждений: Java. Поиск совпадений
Введите шаблон
\w+(?=;) Введите строку abcd abcd; abcd
Найден текст abcd позиция старта 5 позиция окончания 9
Введите шаблон test(?!success) Введите строку
test test succeess testsuccess test
Найден текст test позиция старта 0 позиция окончания 4 Найден текст test позиция старта 5 позиция окончания 9 Найден текст test позиция старта 31 позиция окончания 35
PHP. Замена с проверкой
<?
$str="The Miet is best vuz in Zelenograd. Address: Moscow Zelenograd"; $result=preg_replace("/(?<!Moscow\s)Zelenograd/", "Moscow", $str); echo $result;
// The Miet is best vuz in Moscow. Address: Moscow Zelenograd /?>
ИП. РВ. Устройство шаблонов. Утверждения |
МИЭТ, 2017 |
Более сложные примеры использования утверждений:
Введите шаблон \w{2}(?=et|em)
Введите строку miet privet vsem nasovsem
Найден текст mi позиция старта 0 позиция окончания 2 Найден текст iv позиция старта 7 позиция окончания 9 Найден текст vs позиция старта 12 позиция окончания 14
Найден текст vs позиция старта 21 позиция окончания 23
Введите шаблон \w{2}(?=et\s|em\s) Введите строку miet privet vsem nasovsem
Найден текст mi позиция старта 0 позиция окончания 2
Найден текст iv позиция старта 7 позиция окончания 9
Найден текст vs позиция старта 12 позиция окончания 14
Введите шаблон (?<=^|\s)\w{2}(?=et\s|em\s) Введите строку miet privet vsem nasovsem
Найден текст mi позиция старта 0 позиция окончания 2 Найден текст vs позиция старта 12 позиция окончания 14