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

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

МИЭТ, 2017

Квантификаторы

Квантификаторы определяют количество повторений

Выражение

X?

X*

X+

X{n}

X{n,}

X{n,m}

Квантификатор

Действие квантификатора

?

Один или ни одного

*

Ни одного, или неограниченно много

+

Один или много

{n}

n повторений

{n,}

Как минимум n повторений

{n,m}

Как минимум n, но не больше m

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

МИЭТ, 2017

? - один или ни одного

Введите шаблон a? Введите строку aa aa

Найден текст a позиция старта 0 позиция окончания 1 Найден текст a позиция старта 1 позиция окончания 2

Найден текст

позиция старта 2 позиция окончания 2

Найден текст a позиция старта 3 позиция окончания 4

Найден текст a позиция старта 4 позиция окончания 5

Найден текст

позиция старта 5 позиция окончания 5

+ - один или много

Введите шаблон a+

Введите строку aa aa

Найден текст aa позиция старта

0

позиция окончания 2

Найден текст aa позиция старта

3

позиция окончания 5

* - ноль или много

 

 

Введите шаблон a*

 

 

Введите строку aa aa

 

 

Найден текст aa позиция старта

0

позиция окончания 2

Найден текст

позиция старта 2

позиция окончания 2

Найден текст aa позиция старта

3

позиция окончания 5

Найден текст

позиция старта 5

позиция окончания 5

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

МИЭТ, 2017

Введите шаблон

a?b*

 

 

 

Введите строку

aa ab bb ba

 

 

 

Найден текст a

позиция старта 0

позиция окончания 1

 

Найден текст a

позиция старта 1

позиция окончания 2

 

Найден текст

позиция старта 2

позиция окончания 2

 

Найден текст ab позиция старта

3 позиция окончания

5

Найден текст

позиция старта 5

позиция окончания 5

 

Найден текст bb позиция старта

6 позиция окончания

8

Найден текст

позиция старта 8

позиция окончания 8

 

Найден текст b

позиция старта 9

позиция окончания 10

Найден текст a

позиция старта 10 позиция окончания

11

Найден текст

позиция старта 11

позиция окончания 11

Введите шаблон a?b+ Введите строку aa ab bb ba

Найден текст ab позиция старта 3 позиция окончания 5 Найден текст bb позиция старта 6 позиция окончания 8

Найден текст b позиция старта 9 позиция окончания 10

Введите шаблон a{2,3}

Введите строку a aa aaa aaaa aaaaa

Найден текст aa позиция старта 2 позиция окончания 4 Найден текст aaa позиция старта 5 позиция окончания 8 Найден текст aaa позиция старта 9 позиция окончания 12

Найден текст aaa позиция старта 14 позиция окончания 17

Найден текст aa позиция старта 17 позиция окончания 19

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

МИЭТ, 2017

Выра

Кванти

Действие квантификатора

 

жение

фикатор

 

 

 

 

+

Жадный (greedy) – находит соответствие шаблону наиболее

 

?

X+

*

длинной части строки.

 

{n}

Подстановка квантификатора выполняется максимальное число

 

{n,}

раз до достижения соответствия шаблону.

 

 

{n,m}

 

 

 

 

Ленивый (reluctant) – находит соответствие шаблону наиболее

X+?

?

короткую часть строки.

 

Подстановка квантификатора выполняется минимальное число

 

 

раз до достижения соответствия шаблону.

 

X++

+

Захватывающий (possessive) – находит единственное

соответствие шаблону без откатывания назад

 

 

 

 

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

МИЭТ, 2017

?? - самые короткие совпадения для один или ни одного

Введите шаблон a??

Введите строку aa aa

Найден текст позиция старта 0 позиция окончания 0 Найден текст позиция старта 1 позиция окончания 1 Найден текст позиция старта 2 позиция окончания 2 Найден текст позиция старта 3 позиция окончания 3

Найден текст позиция старта 4 позиция окончания 4 Найден текст позиция старта 5 позиция окончания 5

+? - самые короткие совпадения для один или много

Введите шаблон a+? Введите строку aa aa

Найден текст a позиция старта 0 позиция окончания 1

Найден текст a позиция старта 1 позиция окончания 2

Найден текст a позиция старта 3 позиция окончания 4

Найден текст a позиция старта 4 позиция окончания 5

*? - самые короткие совпадения для ноль или много

Введите шаблон a*?

Введите строку aa aa

Найден текст позиция старта 0 позиция окончания 0

Найден текст позиция старта 1 позиция окончания 1 Найден текст позиция старта 2 позиция окончания 2 Найден текст позиция старта 3 позиция окончания 3 Найден текст позиция старта 4 позиция окончания 4

Найден текст позиция старта 5 позиция окончания 5

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

МИЭТ, 2017

?+ - все возможные совпадения для один или ни одного

Введите шаблон a?+ Введите строку aa aa

Найден текст a позиция старта 0 позиция окончания 1 Найден текст a позиция старта 1 позиция окончания 2 Найден текст позиция старта 2 позиция окончания 2 Найден текст a позиция старта 3 позиция окончания 4

Найден текст a позиция старта 4 позиция окончания 5

Найден текст позиция старта 5 позиция окончания 5

++ - все возможные совпадения для один или много

Введите шаблон a++ Введите строку aa aa

Найден текст aa позиция старта 0 позиция окончания 2 Найден текст aa позиция старта 3 позиция окончания 5

*+ - все возможные совпадения для ноль или много

Введите шаблон a*+ Введите строку aa aa

Найден текст aa позиция старта 0 позиция окончания 2

Найден текст позиция старта 2 позиция окончания 2

Найден текст aa позиция старта 3 позиция окончания 5 Найден текст позиция старта 5 позиция окончания 5

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

МИЭТ, 2017

Более сложные примеры демонстрирующие жадность квантификаторов

Введите шаблон ".+"

Введите строку Студенты "спят" на лекции из-за "душного" лектора Найден текст "спят" на лекции из-за "душного" позиция старта 9 позиция окончания 41

Введите шаблон ".+?"

Введите строку Студенты "спят" на лекции из-за "душного" лектора

Найден текст "спят" позиция старта 9 позиция окончания 15 Найден текст "душного" позиция старта 32 позиция окончания 41 позиция окончания 41

ИП. РВ. Устройство шаблонов. Замены

МИЭТ, 2017

Java

Замены выполняются с помощью следующих методов класса Matcher replaceFirst() - замена первого совпадения и

replaceAll() - замена всех совпадений

PHP

Замены выполняется функцией preg_replace($pattern, $str_replace, $str);

JavaScript

Замены выполняется методом replace строки: str.replace(pattern, str_rellace);

ИП. РВ. Устройство шаблонов. Замены

МИЭТ, 2017

Измененная программа демонстрации работы РВ для замены в строках

System.out.println("Введите шаблон");

Pattern pattern = Pattern.compile(scan.nextLine()); System.out.println("Введите строку");

Matcher matcher = pattern.matcher(scan.nextLine());

while (matcher.find()) { System.out.println(

"Найден текст " + matcher.group()

+" позиция старта "+matcher.start()

+" позиция окончания "+matcher.end());

}

System.out.println("Введите строку или шаблон замены"); String strReplace = scan.nextLine();

if( !strReplace.isEmpty() ) { System.out.println("Результат");

System.out.println(matcher.replaceFirst(strReplace));

}

ИП. РВ. Устройство шаблонов. Замены

МИЭТ, 2017

Единичная замена (replaceFirst())

Введите шаблон 2[^1-3]+ Введите строку 1124312215

Найден текст 24 позиция старта 2 позиция окончания 4

Введите строку или шаблон замены aa

Результат

11aa312215

Множественная замена (replaceAll())

Введите шаблон

2[^1-3]+

Введите строку 1124312215_1124312215

Найден текст 24 позиция старта 2 позиция окончания 4

Найден текст 24 позиция старта 13 позиция окончания 15 Введите строку или шаблон замены

Aa Результат

11aa312215_11aa312215

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