Основы работы с регулярными выражениями и производство http запросов. Библиотека регулярных выражений re

Слайд 2

ПОНЯТИЕ РЕГУЛЯРНОГО ВЫРАЖЕНИЯ

уязвимост

PATTERN

. ^ $ * + ? { } [ ]

ПОНЯТИЕ РЕГУЛЯРНОГО ВЫРАЖЕНИЯ уязвимост PATTERN . ^ $ * + ? {
\ | ( )

Метасимволы

Б.{4}род

Белгород
Б.огород
Б. Народ
Безпород

Слайд 3

МЕТОДЫ И ФУНКЦИИ БИБЛИОТЕКИ re
ФУНКЦИЯ match, МЕТОДЫ group(), groups()

import re title = "Белгород

МЕТОДЫ И ФУНКЦИИ БИБЛИОТЕКИ re ФУНКЦИЯ match, МЕТОДЫ group(), groups() import re
308000, ул. Костюкова, 46"
example = re.match( '(.*) (\d{6}), (.*)', title, re.M|re.I)
if example:
print("example.group(): ", example.group())
print("example.group(1): ", example.group(1))
print("example.group(2): ", example.group(2))
print("example.groups(): ", example.groups())
else:
print("Нет совпадений!")

re.match(pattern, string, flags=0)

Белгород 308000, ул. Костюкова, 46
Белгород
308000
('Белгород', '308000', 'ул. Костюкова, 46')

Слайд 4

МЕТОДЫ И ФУНКЦИИ БИБЛИОТЕКИ re
ФУНКЦИИ search И findall

title = """Белгород 308000 ул.

МЕТОДЫ И ФУНКЦИИ БИБЛИОТЕКИ re ФУНКЦИИ search И findall title = """Белгород
Костюкова, 46 Москва 127000, ул. Академика Королева, 12""" example = re.search( '^(.*) (\d{6}), (.*)', title, re.M|re.I)
if example:
print("example.group():", example.group())
print("example.group(1):", example.group(1))
print("example.group(2):", example.group(2))
print("example.group(3):", example.group(3))
print("example.groups():", example.groups())
else:
print("Нет совпадений!")

re.search(pattern, string, flags=0)

Москва 127000, ул. Академика Королева, 12
Москва
127000
ул. Академика Королева, 12
('Москва', '127000', 'ул. Академика Королева, 12')

Ищем пробел перед строкой

Функция findall объединяет match и search: ищет pattern по всей строке.
Имеет тот же формат

Слайд 5

МЕТОДЫ И ФУНКЦИИ БИБЛИОТЕКИ re
МЕТОД sub

title = """Белгород 308000 ул. Костюкова, 46

МЕТОДЫ И ФУНКЦИИ БИБЛИОТЕКИ re МЕТОД sub title = """Белгород 308000 ул.
Москва 127000, ул. Академика Королева, 12"""
ex2 = re.sub('(\d{6})', '111111', title) print(ex2)

re.sub(pattern, repl, string)

Белгород 111111 ул. Костюкова, 46
Москва 111111, ул. Академика Королева, 12

Заменяет в строке string вхождение pattern на repl

Слайд 6

HTTP-ЗАПРОСЫ С РЕГУЛЯРНЫМИ ВЫРАЖЕНИЯМИ

Формируем XML-карту сайта по адресу http://ratings.bstu.ru/direction
с помощью инструмента

HTTP-ЗАПРОСЫ С РЕГУЛЯРНЫМИ ВЫРАЖЕНИЯМИ Формируем XML-карту сайта по адресу http://ratings.bstu.ru/direction с помощью
xml-sitemaps.com – кладем ее в файл rbstu-sitemap.xml

from bs4 import BeautifulSoup as BeSo import requests import re
content = []
with open(".../rbstu-sitemap.xml","r") as file:
content = file.readlines()
content = "".join(content)
bs_content = BeSo(content, "lxml")
add_list = [] pbs = bs_content.findAll('loc') for p in pbs: p1 = p.renderContents().decode('UTF-8’)̆ pr = re.findall('http://ratings.bstu.ru/direction/000000003/000000001/00000000\d{1}/09.*',p1) if pr:
add_list.append(pr)
for j,_ in enumerate(add_list): response =requests.get(add_list[j][0]) soup = BeSo(response.text) P = soup.find(text='По общему конкурсу').findNext('tbody').findAll('tr') counter = 0 for p in P:
Yes = p.findAll('td')[4].renderContents().decode('UTF-8') if Yes == 'Есть’:
counter+=1 d = re.search('(09.\d{2}.\d{2})',add_list[j][0]).group(1) print('Имеется ',counter,' согласий на направление ', d)