Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 15, 2014 17:18:48

kampella
Зарегистрирован: 2014-11-21
Сообщения: 95
Репутация: +  1  -
Профиль   Отправить e-mail  

Результат regexp (re module)

Выражение

 ((http:\/\/|https:\/\/)([a-z0-9_-]+\.){1,4}[a-z]+)

Возвращает 3 группы: общий результат групп и результат двух отдельных групп: (http:\/\/|https:\/\/) и (+\.).
 [('https://wordpress.org', 'https://', 'wordpress.')]

Можно ли вернуть только общий результат 'https://wordpress.org' ?

Отредактировано kampella (Дек. 15, 2014 17:20:14)

Офлайн

#2 Дек. 15, 2014 17:30:20

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Результат regexp (re module)

>>> a = re.match('((http:\/\/|https:\/\/)([a-z0-9_-]+\.){1,4}[a-z]+)', 'https://wordpress.ru')
>>> a.groups()
('https://wordpress.ru', 'https://', 'wordpress.')
>>> a.groups()[0]
'https://wordpress.ru'
>>> a.group()
'https://wordpress.ru'



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Дек. 15, 2014 17:33:41

kampella
Зарегистрирован: 2014-11-21
Сообщения: 95
Репутация: +  1  -
Профиль   Отправить e-mail  

Результат regexp (re module)

terabayt
((http:\/\/|https:\/\/)(+\.){1,4}+)

((?:http:\/\/|https:\/\/)(?:[a-z0-9_-]+\.){1,4}[a-z]+)

Офлайн

#4 Дек. 15, 2014 17:57:24

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Результат regexp (re module)

тогда можно и так:

https?:\/\/(\w-?)+(\.[a-z]+){1,3}
>>> a = re.search('https?:\/\/(\w-?)+(\.[a-z]+){1,3}}', 'https://wordpress.ru/')
>>> a.group()
'https://wordpress.ru'



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Дек. 15, 2014 18:03:20)

Офлайн

#5 Дек. 15, 2014 18:21:08

GreyZmeem
От: Киев
Зарегистрирован: 2013-12-03
Сообщения: 147
Репутация: +  34  -
Профиль   Отправить e-mail  

Результат regexp (re module)

Почему не воспользоваться urlparse?

Офлайн

#6 Дек. 15, 2014 22:14:14

kampella
Зарегистрирован: 2014-11-21
Сообщения: 95
Репутация: +  1  -
Профиль   Отправить e-mail  

Результат regexp (re module)

GreyZmeem
Почему не воспользоваться urlparse?
Потомучто findall

Офлайн

#7 Дек. 15, 2014 22:23:51

kampella
Зарегистрирован: 2014-11-21
Сообщения: 95
Репутация: +  1  -
Профиль   Отправить e-mail  

Результат regexp (re module)

terabayt
тогда можно и так:

>>> a = re.search('https?:\/\/(\w-?)+(\.[a-z]+){1,3}', 'https://word--press.ru/')
>>> a.group()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'

a = re.search('https?:\/\/(\w-*)+(\.[a-z]+){1,3}', 'https://word--press.ru/')

Отредактировано kampella (Дек. 15, 2014 22:26:16)

Офлайн

#8 Дек. 15, 2014 22:50:49

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Результат regexp (re module)

ну эт я специально сделал. сначала я разместил прост, а потом вспомнил и отредактировал. разве может быть сайт с несколько подряд идущими черточками?! если хотите можно и так:

https?:\/\/[\w-]+(\.[a-z]+){1,3}



————————————————
-*- Simple is better than complex -*-

Офлайн

#9 Дек. 16, 2014 05:48:56

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Результат regexp (re module)

Слеши экранировать не надо.

r'https?:// ... '



Отредактировано py.user.next (Дек. 16, 2014 05:49:06)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version