Изменение регулярного выражения Python

Я пытаюсь найти все ссылки на веб-странице в виде "http://something" или https://something. Я сделал регулярное выражение, и он работает:

 L = re.findall(r"http://[^/\"]+/|https://[^/\"]+/", site_str) 

Но есть ли более короткий способ написать это? Я повторяю: // [^ / \ "] + / дважды, возможно, без всякой необходимости. Я пробовал разные вещи, но это не работает. Я пробовал:

 L = re.findall(r"http|https(://[^/\"]+/)", site_str) L = re.findall(r"(http|https)://[^/\"]+/", site_str) L = re.findall(r"(http|https)(://[^/\"]+/)", site_str) 

Очевидно, что я что-то пропустил, или я просто недостаточно понимаю регулярные выражения python.

One Solution collect form web for “Изменение регулярного выражения Python”

Вы используете группы захвата, а .findall() изменяет поведение, когда вы их используете (оно будет возвращать только содержимое групп захвата). Ваше регулярное выражение может быть упрощено, но ваши версии будут работать, если вместо этого вы будете использовать не- захватные группы:

 L = re.findall(r"(?:http|https)://[^/\"]+/", site_str) 

Вам не нужно избегать двойной цитаты, если вы используете одиночные кавычки вокруг выражения, и вам нужно только изменить s в выражении, так что s? тоже будет работать:

 L = re.findall(r'https?://[^/"]+/', site_str) 

Демо-версия:

 >>> import re >>> example = ''' ... "http://someserver.com/" ... "https://anotherserver.com/with/path" ... ''' >>> re.findall(r'https?://[^/"]+/', example) ['http://someserver.com/', 'https://anotherserver.com/'] 
  • re.findall, который возвращает dict названных групп захвата?
  • re.split () дает пустые элементы в списке
  • Необязательный параметр URL в маршруте GAE webapp2
  • Регулярное выражение в Python не будет соответствовать концу строки
  • Python: анализ числовых значений из строки с использованием регулярных выражений
  • Python Regex - найти содержимое из строки между двумя '*'
  • Использовать string.replace для Python vs re.sub
  • Как заменить в группу регулярных выражений в Python
  • Python - лучший язык программирования в мире.