Хотя Роберт Харви предложил полезный метод urllib.parse
, вот моя попытка регулярного выражения:
(?:http[s]?:\/\/)?(?:www\.)?([^/\n\r\s]+\.[^/\n\r\s]+)(?:/)?(\w+)?
Как видно на regex101.com
Пояснение -
Сначала регулярное выражение проверяет, есть ли https://
или http://
.Если это так, он игнорирует его, но начинает поиск после этого.
Затем регулярное выражение проверяет наличие www.
. Важно отметить, что это не является обязательным, поэтому, если пользователь вводит my website is site.com
, site.com
будет сопоставлено.
[^/\n\r\s]+\.[^/\n\r\s]+
соответствует фактическому URL, который вам нужен, поэтому в нем не будет пробелов или переносов.Да, и там должен быть хотя бы один период (.
).
Поскольку ваш вопрос выглядит так, как будто вы также хотите соответствовать подкаталогу, я добавил (\w+)?
в конце.
TL; DR
Группа 0 - полный URL
Группа 1 - доменное имя
Группа 2 - подкаталог