Python 正则的问题

2021-09-11 23:40:45 +08:00
 Vvvteran
环境:py3.9.6
部分代码:
ip = '1.2.3.4:8080/3xx3/a.php?b=1'
parse_obj = urlparse(ip)
print(parse_obj)

解析之后的结果:
ParseResult(scheme='1.2.3.4', netloc='', path='8080/3xx3/a.php', params='', query='b=1', fragment='')

请问各位大佬,针对这种不带 http(s)://的情况,如何使用正则提取 path 中的端口而不要之后路径呢,小白求解。
1281 次点击
所在节点    Python
4 条回复
ccdjh
2021-09-12 22:42:40 +08:00
直接字符串处理,是下面这意思么?

ip = '1.2.3.4:8080/3xx3/a.php?b=1'
>>> ip.split(":")[1].split("/")[0]
'8080'
>>> ip.split(":")[0]
'1.2.3.4'
ungrown
2021-09-13 08:16:45 +08:00
我自己常用的办法是,先 parse 一遍,检查结果的 scheme,如果缺失或者错误,再给开头加上默认的 scheme,二次 parse 。也可以用其他方式判断是否需要加协议头,方法多种多样。
princelai
2021-09-13 09:54:39 +08:00
只要端口,不要 url 和后面的路径吗?

(?<=:)\d{1,5}
wlsnx
2021-09-13 12:24:50 +08:00
不带 http,你就先加上 http 再解析呗,不然 urlparse 的结果都是错的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/801288

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX