首页 > 解决方案 > 拆分 SSH 样式的用户@域/路径?

问题描述

我有类似我们在ssh/中输入的 URL rsync

s1 = 'user1@1.2.3.4/home/test/blabla'
s2 = 'user2@example.com/home/test/blabla'

这是让用户、域、路径适用于所有类型的 URL 的可靠方法吗:

user = s1.split('@')[0]
domain = s1.split('@')[1].split('/')[0]
path = s1.split('@')[1].split('/')[1]

还是有更好的方法,包含在 Python 标准库中?

注意:似乎有不同的标准化,请参阅ssh:// 的 URL 格式

标签: pythonurlsshrsync

解决方案


您可以使用正则表达式:

import re

s1 = 'user1@1.2.3.4/home/test/blabla'

user = re.search(r'^(.+?)(?=\@)', s1).group()
domain = re.search(r'(?<=\@)(.+?)(?=\/)', s1).group()
path = re.search(r'/(.+?)$', s1).group()

print(user)    # user1
print(domain)  # 1.2.3.4
print(path)    # /home/test/blabla


推荐阅读