голосование
PHP
Javascript
BASH
HTML
Firebird
Программы
Хостинг
Майнинг
Ресурсы
GIT
SEO
Oracle
Python
Железо
Проголосуйте за категорию!
счётчик
Яндекс.Метрика

Поиск значений регулярные выражения Python

Дошли руки до регулярных выражений Python. Эта тема сложная и рано или поздно вы с ней столкнётесь. Я покажу вам как распарсить 2 урла. Задача простая - вытащить все значения из урлов. В первом примере мы будем искать сразу 2 переменные: cat, page. Нам поможет питоновская функция findall. Она позволяет искать массу значений, а не одно как match и search. В функции re.findall() необходимо передать данные для 2 входных параметров: само регулярное выражение, строку для поиска. Обратите внимание на экранирование \?. Символ ? в регулярных выражениях означает может быть элемент или группа элементов. Его необходимо экранировать для того чтобы он воспринимался как символ строки, а не часть регулярного выражения. ^ - применяется для того чтобы искать совпадение с самого начала строки. Если первый символ строки пробел, то регулярное выражение не сработает. Символ $ означает конец строки. Круглые скобки () играют большое значение. Благодаря им вы забираете данные из строки. Без скобочек ничего не получится.


#!/usr/bin/python3

import re

url_cat='http://egorch.ru/view_cat.php?cat=2&page=4'

match = re.findall(r"^http://egorch.ru/view_cat.php\?cat=(\d+)&page=(\d+)$", url_cat)
print(type(match))
'''
вывод:
<class 'list'>
'''
print(type(match[0]))
'''
вывод:
<class 'tuple'>
'''
print(match[0])
'''
вывод:
('2', '4')
'''

cat, page = match[0];
print('cat:', cat, 'page:', page)
'''
вывод:
cat: 2 page: 4
'''

Во втором примере мы попытаемся найти урл при помощи регулярных выражений Python и ip страницы. Для поиска одного урла используем search. Если функция search находит совпадение, то останавливается. Если вам нужно найти несколько совпадений в строке, то используйте findall. Обратите внимание на круглые скобки внутри регулярного выражения. Благодаря им вы вы схватите весь урл.


url_page='текст1 http://egorch.ru/view_post.php?id=9 текст2'
url = re.search(r'(http://egorch.ru/view_post.php\?id=\d)', url_page)
#вывод найденного урл
print('url:', url.group())
'''
вывод:
url: http://egorch.ru/view_post.php?id=9
'''

Теперь необходимо найти id страницы. Нам снова поможет функция findall. Благодаря круглым скобочкам (\d+) берём id страницы.


url_page='http://egorch.ru/view_post.php?id=9'
id_page = re.findall(r'^http://egorch.ru/view_post.php\?id=(\d+)$', url_page)
# получаем первый элемент списка
id_page = id_page[0]
print('id_page:', id_page)
'''
вывод:
id_page: 9
'''

Функции регулярных выражений

  1. compile - метод для создания объект шаблона
  2. match - метод ищет совпадение по заданному шаблону. Поиск ведётся с начала строки
  3. search - возвращает одну найденную строку
  4. findall - метод возвращает список всех найденных совпадений
  5. sub - метод ищет шаблон в строке и заменяет его на указанную подстроку. Идеально подходит для замены неприличных слов в сообщений.
  6. group - метод выводит результат
  7. start - номер начальной позиции поиска
  8. end - номер последней позиции поиска

Шпаргалка по символам для шаблона.

СимволОписание
.Один любой символ, кроме новой строки \n.
?0 или 1 вхождение шаблона слева
+1 и более вхождений шаблона слева
*0 и более вхождений шаблона слева
\wЛюбая цифра или буква (\W — все, кроме буквы или цифры)
\dЛюбая цифра [0-9] (\D — все, кроме цифры)
\sЛюбой пробельный символ (\S — любой непробельный символ)
\bГраница слова
[..]Один из символов в скобках ([^..] — любой символ, кроме тех, что в скобках)
\Экранирование специальных символов (\. означает точку или \+ — знак «плюс»)
^ и $Начало и конец строки соответственно
{n,m}От n до m вхождений ({,m} — от 0 до m)
a|bСоответствует a или b
()Группирует выражение и возвращает найденный текст
\t, \n, \rСимвол табуляции, новой строки и возврата каретки соответственно

Если вы хотите проверять e-mail адреса при помощи регулярных выражений, то посмотрите статью Как проверить email-адрес регулярные выражения Python. Я подробно описываю как проверять email. Вы увидите пример поиска email в строке.

Если вы планируете как я освоить фреймворк django, то изучайте регулярные выражения. В django часто парсятся урлы. Научитесь писать короткие регулярные выражения. Чем короче выражение, тем быстрее оно работает. Громоздкие регулярные выражения будут замедлять работу скриптов.

просмотры: 991, уровень: лёгкий уровень, рейтинг: 5, дата: 2017-12-11 14:22:00
проголосовать:

Комментарии:






поиск
сайты друзей
банеры
сервис мониторинга работы сайта, мониторим HTTP, HTTPS, FTP, MYSQL, PostgreSQL, POP3, SMTP, IMAP
http://ping-admin.ru/index_5659.html мониторинг сайтов сервис мониторинга работы сайта, мониторим HTTP, HTTPS, FTP, MYSQL, PostgreSQL, POP3, SMTP, IMAP
http://trainingweb.ru/redirect/well_web_vps_kvm Аренда VPS KVM в Европе Мы предлагаем в аренду VPS серверы с выделенным IP-адресом, которые полностью эмулируют физический сервер.
http://www.2domains.ru домен RU домен RU всего за 99 рублей