V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JCZ2MkKb5S8ZX9pq
V2EX  ›  正则表达式

请教一个获取 ip 地址的正则问题

  •  
  •   JCZ2MkKb5S8ZX9pq · 2020-08-12 22:44:07 +08:00 · 1865 次点击
    这是一个创建于 1555 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 想要获取的是代理服务器,包括 ip 和 port 。

    • 简单的类似

      (?s)(\d+\.\d+\.\d+\.\d+).+?(\d+)
      

      这样粗暴的方式我是知道的。(偶尔有多行的情况)

    • " 123.1.1.1 8080 " 这种是能捕获到的

    • " <td param='123.1.1.1'>123.1.1.1</td><td>8080</td> "
      请问这种有重复部分的,不想用 xpath,直接用正则怎么规避 '123.1.1.1:123' 这类结果。

    9 条回复    2020-08-13 00:13:33 +08:00
    calmzhu
        1
    calmzhu  
       2020-08-12 22:59:13 +08:00
    意思是只要<td>标签的 text 部分内容?

    如果是的话,正则前后加个零宽断言试试,类似这样
    (?=<)(\d+\.\d+\.\d+\.\d+).+?(\d+)
    calmzhu
        2
    calmzhu  
       2020-08-12 23:01:04 +08:00
    @calmzhu

    尖括号反了。
    (?=>)\s?(\d+\.\d+\.\d+\.\d+).+?(\d+)

    然后零宽断言记得是正则的扩展,不同语言工具支持语法好像有差别,可能需要调试下
    JCZ2MkKb5S8ZX9pq
        3
    JCZ2MkKb5S8ZX9pq  
    OP
       2020-08-12 23:05:53 +08:00
    @calmzhu
    未必在 td 里,另外你前面的零宽是不是指 td 右侧的括号?(?<=>)
    JCZ2MkKb5S8ZX9pq
        4
    JCZ2MkKb5S8ZX9pq  
    OP
       2020-08-12 23:07:00 +08:00
    @calmzhu 就是有一些含 html 的情况,也有不含的,想搞个通用的。
    calmzhu
        5
    calmzhu  
       2020-08-12 23:13:34 +08:00
    标签不是 TD 也没关系。就是通过寻找 IP 地址前面第一个非空字符是>的匹配字符串。

    但是非 HTML 就不匹配了。

    通用的话,可能需要文本有规律,让后再考虑把规律翻译成正则。
    JCZ2MkKb5S8ZX9pq
        6
    JCZ2MkKb5S8ZX9pq  
    OP
       2020-08-12 23:22:34 +08:00
    @calmzhu 先在前面加了[>\s]凑合一下
    JCZ2MkKb5S8ZX9pq
        7
    JCZ2MkKb5S8ZX9pq  
    OP
       2020-08-12 23:39:01 +08:00
    @JCZ2MkKb5S8ZX9pq 不过实际试下来,前缀种类有点多,最好还是能去后缀,或者去重。
    Dvel
        8
    Dvel  
       2020-08-12 23:42:20 +08:00   ❤️ 1
    (\d+\.\d+\.\d+\.\d+).+?((?<!\.)\d+(?!\.|\d))

    这样呢,缺点是如果 IP 和端口号之间有任意数字就不管用了。
    JCZ2MkKb5S8ZX9pq
        9
    JCZ2MkKb5S8ZX9pq  
    OP
       2020-08-13 00:13:33 +08:00
    @Dvel 对对对
    我一开始 (?!\.|\d) 这个没写对,老是排除错误。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1901 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 16:30 · PVG 00:30 · LAX 08:30 · JFK 11:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.