Найти - Пользователи
Полная версия: Результат regexp (re module)
Начало » Python для новичков » Результат regexp (re module)
1
kampella
Выражение
 ((http:\/\/|https:\/\/)([a-z0-9_-]+\.){1,4}[a-z]+)

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

Можно ли вернуть только общий результат 'https://wordpress.org' ?
terabayt
>>> 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'
kampella
terabayt
((http:\/\/|https:\/\/)(+\.){1,4}+)

((?:http:\/\/|https:\/\/)(?:[a-z0-9_-]+\.){1,4}[a-z]+)
terabayt
тогда можно и так:
https?:\/\/(\w-?)+(\.[a-z]+){1,3}
>>> a = re.search('https?:\/\/(\w-?)+(\.[a-z]+){1,3}}', 'https://wordpress.ru/')
>>> a.group()
'https://wordpress.ru'
GreyZmeem
Почему не воспользоваться urlparse?
kampella
GreyZmeem
Почему не воспользоваться urlparse?
Потомучто findall
kampella
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/')
terabayt
ну эт я специально сделал. сначала я разместил прост, а потом вспомнил и отредактировал. разве может быть сайт с несколько подряд идущими черточками?! если хотите можно и так:
https?:\/\/[\w-]+(\.[a-z]+){1,3}
py.user.next
Слеши экранировать не надо.

r'https?:// ... '
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB