如何取出其中的 IP 地址

2017 年 3 月 2 日
 Adia

jdbc:mysql://10.0.151.205:3306 -> 10.0.151.205:3306

感觉用正则会很快,但是不是很懂正则。还有什么特殊的技巧吗?

3664 次点击
所在节点    Python
19 条回复
Famio
2017 年 3 月 2 日
不懂 py 的来打混下
不知道 py 能不能转成 string 再处理……
fortunezhang
2017 年 3 月 2 日
split(':')
no996
2017 年 3 月 2 日
如果字符串固定,只是 IP 会不同,那么按照字符串长度截取不失为一种方法
windfarer
2017 年 3 月 2 日
不是很懂正则就学一下啊, 30 分钟入门教程
izhaohui
2017 年 3 月 2 日
(\d+?\.){3}\d+?\.:\d+?
izhaohui
2017 年 3 月 2 日
哎呀多了个点
grimpil
2017 年 3 月 2 日
匹配 ip 的正则表达式,网上太多了,随便搜一下就是答案
sunnywx
2017 年 3 月 2 日
正则:[\d{1,3}.]+\d{1,3}:\d{4}
abc950309
2017 年 3 月 2 日
re.match(r'^.+\/\/(?P<ip>\d{1,3}(\.\d{1,3}){3}).+$', 'jdbc:mysql://10.0.151.205:3306 -> 10.0.151.205:3306').group('ip')
不能帮助你更多了 :P
langmoe
2017 年 3 月 2 日
print 'jdbc:mysql://10.0.151.205:3306 -> 10.0.151.205:3306'.split('->')[1].split(':')[0].strip()
mgna17
2017 年 3 月 2 日
'jdbc:mysql://10.0.151.205:3306'.split('/')[-1]
Adia
2017 年 3 月 2 日
@yohole 端口号的位数也会变
@langmoe 说错了,是 jdbc:mysql://10.0.151.205:3306 变成 10.0.151.205
langmoe
2017 年 3 月 2 日
@Adia 额,我以为是 docker 那种端口映射关系的字符串
Adia
2017 年 3 月 2 日
@langmoe 搞定了,感谢。 print '''jdbc:mysql://10.0.151.205:3306'''.split('/')[-1].split(':')[0]
dant
2017 年 3 月 2 日
ijustdo
2017 年 3 月 2 日
我也来个不用正则的 标准库 urlparse
>>> import urlparse
>>> a = 'jdbc:mysql://10.0.151.205:3306'
>>> urlparse.urlparse(urlparse.urlparse(a).path).hostname
'10.0.151.205'
ijustdo
2017 年 3 月 2 日
这样也可以的 记住 split rsplit lsplit 是一组函数 他第二个参数非常有用的

>>> a.rsplit(':', 1)[0].rsplit('/', 1)[-1]
'10.0.151.205'
xzpjerry731
2017 年 3 月 3 日
>>> ip_data

'jdbc:mysql://10.0.151.205:3306'

>>> rule

'.*//(?P<ip>\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}:\\d{1,5})' #端口号有五位数的啊

>>> re.match(rule, ip_data).group('ip')

'10.0.151.205:3306
mingyun
2017 年 3 月 4 日
@ijustdo nice

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

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

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

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

© 2021 V2EX