Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
188
Добавлен:
17.04.2018
Размер:
171.44 Кб
Скачать

ИП. РВ. Устройство шаблонов. Условия

МИЭТ, 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

Соседние файлы в папке Интернет технологии