
- •Интернет-программирование
- •ИП. РВ. Спецификации
- •ИП. РВ. Понятия
- •ИП. РВ. Подключение
- •ИП. РВ. Тестирование
- •ИП. РВ. Устройство шаблонов
- •ИП. РВ. Устройство шаблонов
- •ИП. РВ. Устройство шаблонов
- •ИП. РВ. Устройство шаблонов
- •ИП. РВ. Устройство шаблонов
- •ИП. РВ. Устройство шаблонов МИЭТ, 2017
- •ИП. РВ. Устройство шаблонов
- •ИП. РВ. Устройство шаблонов
- •ИП. РВ. Устройство шаблонов
- •ИП. РВ. Устройство шаблонов МИЭТ, 2017
- •ИП. РВ. Устройство шаблонов
- •ИП. РВ. Устройство шаблонов. Замены
- •ИП. РВ. Устройство шаблонов. Замены
- •ИП. РВ. Устройство шаблонов. Замены
- •ИП. РВ. Устройство шаблонов. Замены
- •ИП. РВ. Устройство шаблонов. Группы
- •ИП. РВ. Устройство шаблонов. Группы
- •ИП. РВ. Устройство шаблонов. Граничные метасимволы
- •ИП. РВ. Устройство шаблонов. Граничные метасимволы
- •ИП. РВ. Устройство шаблонов. Перечисления
- •ИП. РВ. Устройство шаблонов. Перечисления
- •ИП. РВ. Устройство шаблонов. Утверждения
- •ИП. РВ. Устройство шаблонов. Утверждения МИЭТ, 2017
- •ИП. РВ. Устройство шаблонов. Утверждения
- •ИП. РВ. Устройство шаблонов. Условия
- •ИП. Реализация РВ в Java. Возможности класса Pattern
- •ИП. Реализация РВ в Java. Возможности класса Pattern
- •ИП. Реализация РВ в Java. Возможности класса Matcher
- •ИП. Реализация РВ в PHP
- •ИП. Реализация РВ в PHP. Применение callback-функций
- •ИП. Реализация РВ в PHP. Применение callback-функций
- •ИП. Реализация РВ в PHP. Применение callback-функций
- •ИП. Реализация РВ в PHP. Применение callback-функций
- •ИП. Реализация РВ в PHP. Применение callback-функций
- •ИП. Реализация РВ в JavaScript
- •ИП. Реализация РВ в JavaScript. Примеры
ИП. РВ. Устройство шаблонов. Условия |
МИЭТ, 2017 |
Два формата задания условных подвыражений
1.(?(условие) шаблон_выполняемый_если_условие_верно)
2.(?(условие) шаблон_если_условие_верно|шаблон_если_условие_неверно)
Увы , не работает в Java
Введите шаблон (?(?<=a)b|c)
Exception in thread "main" java.util.regex.PatternSyntaxException:
Unknown inline modifier near index 2 (?(?<=a)b|c)
^
Но работает в PHP и JavaScript
<?
preg_match_all("/(?(?<=a)b|c)/", "abacbbc", $result); echo "<pre>"; print_r($result); echo "</pre>";
// вернет b и c ?>
ИП. Реализация РВ в Java. Возможности класса Pattern |
МИЭТ, 2017 |
Регистронезависимый поиск
Pattern pattern = Pattern.compile(strPattern, Pattern.CASE_INSENSITIVE);
Введите шаблон ab
Введите строку ab AB
Найден текст ab позиция старта 0 позиция окончания 2 Найден текст AB позиция старта 3 позиция окончания 5
Добавление мультистрочного режима
Введите шаблон ^ab
Введите строку ab
ab
Найден текст ab позиция старта 0 позиция окончания 2
Pattern pattern = Pattern.compile(strPattern,
Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
Введите шаблон ^ab Введите строку
ab ab
Найден текст ab позиция старта 0 позиция окончания 2
Найден текст ab позиция старта 3 позиция окончания
ИП. Реализация РВ в Java. Возможности класса Pattern |
МИЭТ, 2017 |
Быстрый поиск
boolean matches(String regex, CharSequence input)
Разбить строку в массив
String[] split(CharSequence input)
String REGEX = ":+";
String INPUT = "one::two:three:::four:five";
Pattern p = Pattern.compile(REGEX);
String[] items = p.split(INPUT); for(String s : items) {
System.out.println(s);
}
Вывод: one two three four five

ИП. Реализация РВ в Java. Возможности класса Matcher |
МИЭТ, 2017 |
int start() |
Возвращает индекс начала предыдущего совпадения |
int start(int group) |
Возвращает начальный индекс схваченной группы group в |
|
предыдущем совпадении. |
int end() |
Возвращает индекс после последнего совпавшего |
|
символа. |
int end(int group) |
Возвращает индекс после последнего символа схваченной |
|
группы group в предыдущем совпадении. |
boolean lookingAt() |
Пытается сопоставить строку с самого начала региона с |
|
шаблоном. Возвращает true, если начало региона входной |
|
строки совпадает с шаблоном. |
boolean find() |
Пытается найти следующую последовательность во |
|
входном регионе, совпадающую с шаблоном. |
boolean find(int start) |
Очищает состояние matcher и пытается найти следующее |
|
совпадение с индекса start. |
String |
Заменяет первое совпадение с шаблоном во входной |
replaceFirst(String |
строке на replacement. |
replacement) |
|
String |
Заменяет все совпадения с шаблонов во входной строке |
replaceAll(String |
на replacement. |
replacement) |
|
ИП. Реализация РВ в PHP |
МИЭТ, 2017 |
Поиск с возвратом true или false |
|
preg_match($reg, $str); |
|
Поиск с возвратом массива совпадений |
|
preg_match($reg, $str, $results); |
|
// $results – массив, элементами которого являются совпадения |
|
Поиск всех совпадений |
|
preg_match_all($reg, $str, $results); |
|
Замена |
|
preg_replace($reg1, $str_replace, $str); |
|
Разбиение строки в массив по шаблону |
|
$results = preg_split($reg, $str); |
|
Регистронезависимость и мультистрочность |
|
Добавление справа к шаблону: /reg/ |
|
I - регистронезависимость |
|
m – мультистрочность |
|
Callback — функция
$results = preg_replace_callback($reg, fun, $str)
// здесь fun — имя функции в кавычках, которой передается каждое совпадение для обработки
ИП. Реализация РВ в PHP. Применение callback-функций |
МИЭТ, 2017 |
Замена Miet на MIET
$str = "The Miet\n\ris best Miet";
$result = preg_replace_callback("/MIET/im", "changeVuz", $str);
function changeVuz($temp) {
//$temp массив из одного элемента return strtoupper($temp[0]);
}
echo "<pre>"; print_r($result); echo "</pre>"; /*
The MIET
is best MIET */
ИП. Реализация РВ в PHP. Применение callback-функций |
МИЭТ, 2017 |
адача: выбрать все атрибуты только из тегов ссылок
?
str="
a href=\"http://miet.ru/about/?Year=2017\" title=\"MIET\" target=\"_blank\"> МИЭТ
/a>\n\r
a title=\"Portfolio\" href=\"http://miet.ru/portfolio\" target=\"_blank\"> ортфолио студентов
/a>\n\r
img src=\"http://privet_miet.jpg\" alt=\"V obed\">
>
ИП. Реализация РВ в PHP. Применение callback-функций |
МИЭТ, 2017 |
Решение задачи: выбрать все атрибуты только из тегов ссылок
<?
preg_replace_callback("/a(\s[a-z]+=\"[^\"]+\")+\>/", 'choose_url', $str); echo "<hr>";
function choose_url($str){
//echo "<pre>"; print_r($str); echo "</pre>";
echo "<b style='color:#ff0000'>".$str[0]."</b><br>"; // выделим красным echo $str[1]." ".$str[2]."<br>";
$str = preg_replace_callback("/([a-z]+)=\"([^\"]+)\"/", 'choose_url', substr($str[0], 0, -1)); return $str;
}
?>
ИП. Реализация РВ в PHP. Применение callback-функций |
МИЭТ, 2017 |
Результат работы:
a href="http://miet.ru/about/?Year=2017" title="MIET" target="_blank">
target="_blank" href="http://miet.ru/about/?Year=2017"
href http://miet.ru/about/?Year=2017 title="MIET"
title MIET target="_blank"
target _blank
a title="Portfolio" href="http://miet.ru/portfolio" target="_blank">
target="_blank" title="Portfolio"
title Portfolio href="http://miet.ru/portfolio"
href http://miet.ru/portfolio target="_blank"
target _blank

ИП. Реализация РВ в PHP. Применение callback-функций |
МИЭТ, 2017 |