推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
Adia
V2EX  ›  Python

如何取出其中的 IP 地址

  •  
  •   Adia · Mar 2, 2017 · 3932 views
    This topic created in 3540 days ago, the information mentioned may be changed or developed.

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

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

    19 replies  •  2017-03-04 08:39:38 +08:00
    Famio
    Famio
    Mar 2, 2017
    1
    不懂 py 的来打混下
    不知道 py 能不能转成 string 再处理……
    fortunezhang
    fortunezhang
    Mar 2, 2017
    2
    split(':')
    no996
    no996
    Mar 2, 2017
    3
    如果字符串固定,只是 IP 会不同,那么按照字符串长度截取不失为一种方法
    windfarer
    windfarer
    Mar 2, 2017
    4
    不是很懂正则就学一下啊, 30 分钟入门教程
    izhaohui
    izhaohui
    Mar 2, 2017 via Android
    5
    (\d+?\.){3}\d+?\.:\d+?
    izhaohui
    izhaohui
    Mar 2, 2017 via Android
    6
    哎呀多了个点
    grimpil
    grimpil
    Mar 2, 2017 via Android
    7
    匹配 ip 的正则表达式,网上太多了,随便搜一下就是答案
    sunnywx
    sunnywx
    Mar 2, 2017
    8
    正则:[\d{1,3}.]+\d{1,3}:\d{4}
    abc950309
    abc950309
    Mar 2, 2017
    9
    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
    langmoe
    Mar 2, 2017❤️1
    10
    print 'jdbc:mysql://10.0.151.205:3306 -> 10.0.151.205:3306'.split('->')[1].split(':')[0].strip()
    mgna17
    mgna17
    Mar 2, 2017
    11
    'jdbc:mysql://10.0.151.205:3306'.split('/')[-1]
    Adia
    Adia
    OP
    Mar 2, 2017
    12
    @yohole 端口号的位数也会变
    @langmoe 说错了,是 jdbc:mysql://10.0.151.205:3306 变成 10.0.151.205
    langmoe
    langmoe
    Mar 2, 2017
    13
    @Adia 额,我以为是 docker 那种端口映射关系的字符串
    Adia
    Adia
    OP
    Mar 2, 2017
    14
    @langmoe 搞定了,感谢。 print '''jdbc:mysql://10.0.151.205:3306'''.split('/')[-1].split(':')[0]
    ijustdo
    ijustdo
    Mar 2, 2017
    16
    我也来个不用正则的 标准库 urlparse
    >>> import urlparse
    >>> a = 'jdbc:mysql://10.0.151.205:3306'
    >>> urlparse.urlparse(urlparse.urlparse(a).path).hostname
    '10.0.151.205'
    ijustdo
    ijustdo
    Mar 2, 2017❤️1
    17
    这样也可以的 记住 split rsplit lsplit 是一组函数 他第二个参数非常有用的

    >>> a.rsplit(':', 1)[0].rsplit('/', 1)[-1]
    '10.0.151.205'
    xzpjerry731
    xzpjerry731
    Mar 3, 2017
    18
    >>> 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
    mingyun
    Mar 4, 2017
    19
    @ijustdo nice
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4346 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 07:03 · PVG 15:03 · LAX 23:03 · JFK 02:03
    ♥ Do have faith in what you're doing.