要不使用正则表达式获取端口,可以使用字符串操作的方法来提取端口。以下是一个示例代码:
def get_port(url):
if ":" in url:
# 查找冒号后面的字符串
port_str = url.split(":")[1]
if "/" in port_str:
# 提取冒号后面的数字部分
port = port_str.split("/")[0]
return int(port)
else:
return int(port_str)
else:
return None
# 测试
url1 = "http://example.com:8080/path"
url2 = "ftp://example.com:21"
url3 = "https://example.com"
print(get_port(url1)) # 输出 8080
print(get_port(url2)) # 输出 21
print(get_port(url3)) # 输出 None
以上代码中,get_port
函数接受一个URL作为参数,通过字符串操作来提取出端口部分。首先判断URL中是否包含冒号(即是否有端口部分),如果有,则使用split
函数将URL分割成两部分,然后再次使用split
函数提取出冒号后面的字符串。如果冒号后面的字符串中包含斜杠,则再次使用split
函数提取出冒号后面的数字部分作为端口;如果冒号后面的字符串中不包含斜杠,则直接将该字符串作为端口。如果URL中不包含冒号,则返回None
表示没有端口。
这种方法虽然没有使用正则表达式,但是对于一些特殊情况可能不够准确,比如URL中的冒号可能会出现在其他位置,或者URL中的数字部分不一定是端口。因此,如果需要处理更复杂的URL情况,推荐使用正则表达式来提取端口。