Использование регулярных выражений



Использование регулярных выражений для проверки данных пользователя показано в клиент-серверном приложении, клиентская часть которого реализована в виде примера №1, содержащего HTML-форму, которая имеет текстовое поле для ввода фамилии и инициалов пользователя ("user_name") и две кнопки: "Сброс" и "Передать данные":

Оглавление

Пример №1

<!DOCTYPE html>
<html>
<head>
<title>Передача данных серверу для проверки</title>
<link rel="stylesheet" href="file:///D:/!PYTHON/lab.css">
</head>
<body>
<h1>Передача данных серверу для проверки</h1>
<form method="get" action="http://zykov/PYTHON/get_data_form.py">
Введите фамилию и инициалы:
<input type="text" class="form" name="user_name"><br><br>
<input type="reset" value="Сброс" class="kn">&nbsp;&nbsp;
<input type="submit" value="Передать данные" class="kn">
</form>
</body>
</html>

После ввода пользователем своей фамилии и инициалов и нажатия кнопки "Передать данные" браузер отправляет введенные данные серверному приложению get_data_form.py:

#!c: . . . /Python35-32/python.exe
print ( "Content-Type: text/html\n" )
import cgi, cgitb, my_cgi, re
cgitb.enable()
user_name=cgi.parse()[ "user_name" ][0]
print (my_cgi.H, "Проверка данных пользоваетеля с помощью регулярных выражений" )
p=re.compile( r'^([А-Я][а-я]+)\s[А-Я]\.[А-Я]\.$' )
m=p.match(user_name)
if m:
print (my_cgi.H2, "Тов. " , m.group(1), "!" , sep= "" )
print (my_cgi.D, "Данные введены правильно." )
else : print (my_cgi.D, "Данные введены неправильно." ),

которое выполняет следующие действия:

· в первых строках указывает путь к интерпретатору языка Python 3.3 и формирует http-заголовок;

· подключает модули языка Python (cgi, cgitb и re), а также пользовательский модуль my_cgi, который содержит форматы для представления данных, отсылаемых клиенту;

· инициализирует обработчик ошибок модуля cgitb с заданием значений по умолчанию;

· с помощью метода cgi.parse() получает фамилию и инициалы пользователя (переменная user_name);

· сообщает пользователю о начале проверки его данных;

· создает шаблон соответствующего регулярного выражения и компилирует его с помощью функции compile(), получая экземпляр класса RegexpObject (переменная p);

· осуществляет сравнение с помощью метода match() введенных данных с объектом регулярного выражения, получая экземпляр класса MatchObject (переменная m);

· если значение m не равно None, то пользователю сообщается:

Тов. Петров!

Данные введены правильно.

В противном случае сообщается:

Данные введены неправильно.

Оглавление

Индивидуальные задания

Разработать приложение на базе технологии "клиент-сервер".
В задачи клиентской части входит: разработать HTML-документ, содержащий форму, обязательными элементами которой являются:

· три текстовых поля для ввода данных пользователя:

§ поле для ввода факультета и группы (name="data1");

§ поле для ввода имени студента (name="data2");

§ поле для ввода номера зачетной книжки (ЗК) и номера телефона (name="data3");

· текстовое поле для ввода литерала;

· кнопка для передачи данных на сервер.

В задачи серверной части входит:

· принять данные из формы;

· сформировать три шаблона регулярных выражений для проверки данных "data1" "data2" и "data3" согласно колонкам "Данные1"/"Шаблон", "Данные2"/"Шаблон" и "Данные3"/"Шаблон" табл. 1. Вводимые данные имеют постоянную и изменяемую части (последняя указана в фигурных скобках). Например, формат "Группа:{}" означает, что должно быть введено слово "Группа: ", а затем название группы (фигурные скобки не вводятся);

· сформировать шаблон РВ для проверки правильности задания литерала согласно колонке "Литерал":

§ 1 – литерала списка, содержащего следующие элементы:
1-й элемент – строка;
2-й элемент – число с плавающей точкой;
3-й элемент – логического типа;

§ 2 – литерала кортежа; содержащего следующие элементы:
1-й элемент – целое число;
2-й элемент – список из трех строк;

§ 3 – литерала диапазона;

§ 4 – литерала множества, содержащего следующие элементы:
1-й элемент – кортеж из четырех целых чисел;
2-й элемент – строка;

§ 5 – литерала словаря, содержащего два элемента:
ключ 1-го элемента – строка, значение – строка;
ключ 2-го элемента – целое число, значение – число с плавающей точкой;

· использовать для проверки данных функции или методы согласно "Данные1"/"Метод", "Данные2"/"Метод" и "Данные3"/"Метод" табл. 1 (для проверки колонки "Литерал" использовать метод, который не использовался при проверках данных "data1" "data2" и "data3"):

§ 1 – функцию match() модуля re;

§ 2 – функцию search() модуля re;

§ 3 – метод match() класса RegexpObject;

§ 4 – метод search() класса RegexpObject;

· по результатам всех проверок передать пользователю соответствующее сообщение.

Таблица 1 – Перечень заданий

Данные1

Данные2

Данные3

Литерал

Шаблон Метод Шаблон Метод Шаблон Метод
1 Факультет {}, гр.: {} 1 Фамилия И. {} 2 ЗК:{} 3 1
2 Ф-т: {} Группа {} 4 Имя Фамилия {} 1 Номер ЗК{} 2 2
3 факультет - {} груп. {} 3 Фамилия И.О. {} 4 ЗК № {} 1 3
4 Группа {} ст. {} 2 И.О. Фамилия {} 3 Номер тел. {xxxxxx} 4 4
5 Гр. {} студент {} 1 И. Фамилия {} 2 Тел.:{xx-xx-xx} 3 5
6 груп. {} с_т {} 4 Фамилия И. О.{} 1 тел.: {xxxxxxx} 2 1
7 гр.: {} с-т {} 3 Имя_Фамилия {} 4 тел. № {xxx-xx-xx} 1 2
8 Студент {}, ф-т: {} 2 Фамилия И. {} 3 тел {xxxxxxxxxxx} 4 3
9 Ст. {} факультет {} 1 Имя Фамилия {} 2 ЗК:{} 3 4
10 Студ. {} ф_т {} 4 Фамилия И.О. {} 1 Номер ЗК{} 2 5
11 С-т {}, ф т: {} 3 И.О. Фамилия {} 4 ЗК № {} 1 1
12 Факультет {}, гр.: {} 2 И. Фамилия {} 3 Номер тел. {xxxxxx} 4 2
13 Ф-т: {} Группа {} 1 Фамилия И. О.{} 2 Тел.:{xx-xx-xx} 3 3
14 факультет - {} груп. {} 4 Имя_Фамилия {} 1 тел.: {xxxxxxx} 2 4
15 Группа {} ст. {} 3 Фамилия И. {} 4 тел. № {xxx-xx-xx} 1 5
16 Гр. {} студент {} 2 Имя Фамилия {} 3 тел {xxxxxxxxxxx} 4 1
17 груп. {} с_т {} 1 Фамилия И.О. {} 2 ЗК:{} 3 2
18 гр.: {} с-т {} 4 И.О. Фамилия {} 1 Номер ЗК{} 2 3
19 Студент {}, ф-т: {} 3 И. Фамилия {} 4 ЗК № {} 1 4
20 Ст. {} факультет {} 2 Фамилия И. О.{} 3 Номер тел. {xxxxxx} 4 5

 


Дата добавления: 2021-11-30; просмотров: 15; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!