Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_RegExp3.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
126.98 Кб
Скачать

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

В языке подстановочных символов MS Word определен ряд квантификаторов.

Служебный символ @ используется для обозначения того, что предыдущий атом должен встретиться в тексте не менее одного раза (верхняя граница повторений не задается).

Точное число повторений n задается конструкцией {n}. Этот квантификатор

Синтаксис для ограниченного {m,n} и неограниченного {m,} диапазонов числа повторений в документации приводится, однако реально эти квантификаторы могут не поддерживаться. Об этом будет свидетельствовать сообщение "Поле Найти содержит неверный шаблон поиска".

ЗАДАНИЕ 2 (Простые шаблоны для поиска замены)

Для выполнения задания использовать фразу:

Написать шаблон для поиска отдельных слов в тексте

1. Выяснить, каким образом выполняется сопоставление с подстановочным знаком * — ищутся подстроки минимальной или максимальной возможной длины. Для этого создать шаблон для поиска подстроки, начинающейся буквы Н и заканчивающейся мягким знаком (их в строке два)

2. Написать шаблон для выделения отдельных слов.

3. Путем операции замены в приведенном тексте слова, состоящие из шести букв (использовать квантификатор) отформатировать так, чтобы они выводились курсивом.

Поиск и замена с применением подстановочных знаков

Для поиска подвыражений и последующего изменения их порядка в тексте используются обратные ссылки.

Как обычно, в шаблоне для выделения подвыражений, из которых будет строиться замена, используются круглые скобки. А выражение для замены строится с помощью обратных ссылок вида \n, где n — цифра от 0 до 9.

Например, если в тексте встречается строка Егоров Владимир, то чтобы поменять местами имя и фамилию нужно в поле Найти записать шаблон (Егоров) (Владимир), где выделяются два подвыражения, а в поле Заменить — выражение \2 \1.

ЗАДАНИЕ 3 (Поиск и замена с изменением порядка подвыражений)

Имеется текст с перечнем отечественных лауреатов нобелевской премии за советский период.

С помощью двух последовательных операций замены, основанных на использовании обратных ссылок, преобразовать текст так, чтобы

а) инициалы шли без пробела перед фамилией,

б) год получения премии был взят в скобки, а запятая перед ним была убрана.

Т.е., строки списка должны выглядеть следующим образом:

Н.Н.Семёнов — химия (1956)

Учесть, что в исходном тексте между фамилией и инициалами может находиться более одного пробела.

Контроль форматов данных в html-формах

В формах пользователям часто нужно заполнить текстовые поля, в которых информация должна иметь определенный, заранее известный формат. Например, это может быть телефонный номер или адрес электронной почты. Правильность заполнения такого поля определяется некоторым шаблоном.

В HTML4 подобную проверку можно было выполнить только с помощью программного кода Javascript.

В HTML5 контролировать правильность формата введенных пользователем данных можно на уровне разметки с помощью регулярного выражения, задаваемого атрибутом pattern тега input. Cопоставление введенного пользователем значения с шаблоном выполняется браузером.

Например,

<input type="text" title="Шаблон: 2 лат. буквы и 6 цифр"             pattern="[a-zA-Z]{2}\d{6}" />

Замечание

В спецификации HTML5 предполагается, что проверка правильности формата введенных форму данных выполняется после нажатия кнопки Submit. Однако браузеры могут отслеживать правильность вводимой информации "на лету", прямо в процессе заполнения поля.

ЗАДАНИЕ 4 (Использование регулярного выражения для проверки правильности ввода данных)

В текстовое поле необходимо ввести номер сотового телефона в формате:

+7 или 8‑ХХХ‑ХХХ-ХХ-ХХ.

В случае ошибки ввода поле должно быть отформатировано особым образом (использовать псевдокласс :invalid). Например,

Замечание

Для указания цифр в регулярном выражении удобно использовать шаблон \d с квантификатором в фигурных скобках. Знак "плюс" нужно экранировать.

Справочная информация

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]