如何取出其中的 IP 地址

2017-03-02 14:42:25 +08:00
 Adia

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

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

3074 次点击
所在节点    Python
19 条回复
Famio
2017-03-02 14:46:56 +08:00
不懂 py 的来打混下
不知道 py 能不能转成 string 再处理……
fortunezhang
2017-03-02 14:47:45 +08:00
split(':')
yohole
2017-03-02 14:48:02 +08:00
如果字符串固定,只是 IP 会不同,那么按照字符串长度截取不失为一种方法
windfarer
2017-03-02 14:48:14 +08:00
不是很懂正则就学一下啊, 30 分钟入门教程
izhaohui
2017-03-02 14:49:21 +08:00
(\d+?\.){3}\d+?\.:\d+?
izhaohui
2017-03-02 14:49:54 +08:00
哎呀多了个点
grimpil
2017-03-02 14:51:25 +08:00
匹配 ip 的正则表达式,网上太多了,随便搜一下就是答案
284716337
2017-03-02 14:53:07 +08:00
正则:[\d{1,3}.]+\d{1,3}:\d{4}
abc950309
2017-03-02 14:53:45 +08:00
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-03-02 14:55:26 +08:00
print 'jdbc:mysql://10.0.151.205:3306 -> 10.0.151.205:3306'.split('->')[1].split(':')[0].strip()
mgna17
2017-03-02 14:59:31 +08:00
'jdbc:mysql://10.0.151.205:3306'.split('/')[-1]
Adia
2017-03-02 14:59:36 +08:00
@yohole 端口号的位数也会变
@langmoe 说错了,是 jdbc:mysql://10.0.151.205:3306 变成 10.0.151.205
langmoe
2017-03-02 15:03:06 +08:00
@Adia 额,我以为是 docker 那种端口映射关系的字符串
Adia
2017-03-02 15:03:34 +08:00
@langmoe 搞定了,感谢。 print '''jdbc:mysql://10.0.151.205:3306'''.split('/')[-1].split(':')[0]
dant
2017-03-02 16:26:45 +08:00
ijustdo
2017-03-02 17:04:22 +08:00
我也来个不用正则的 标准库 urlparse
>>> import urlparse
>>> a = 'jdbc:mysql://10.0.151.205:3306'
>>> urlparse.urlparse(urlparse.urlparse(a).path).hostname
'10.0.151.205'
ijustdo
2017-03-02 17:07:35 +08:00
这样也可以的 记住 split rsplit lsplit 是一组函数 他第二个参数非常有用的

>>> a.rsplit(':', 1)[0].rsplit('/', 1)[-1]
'10.0.151.205'
xzpjerry731
2017-03-03 01:28:54 +08:00
>>> 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-03-04 08:39:38 +08:00
@ijustdo nice

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

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

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

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

© 2021 V2EX