如何创建一个regex,该regex捕获IP地址,后跟与该IP地址相关的值


How to create a regex which captures the IP addresses followed by a value associated with that IP address?

我在一组节点上运行一个脚本作业,与该作业相关的日志为我提供了我试图用正则表达式解析的数据字符串。我试图从我的链接中提取成功率为0%的所有节点的IP地址https://regex101.com/r/jX9hW8/2。我想得到的是

10.0.0.183
Success rate is 0 percent

如果我试着列出我尝试过的一切,我会在这里呆上一整天,但我似乎只得到了括号里的任何数字。

您可以使用

'~^'s*D'd+'.node's+'((['d.]+)'):(?:(?!^'s*(?:D'd+'.node|Success rate is)'s).)*^'s*Success rate is 0'b~ms'

查看regex演示

这个想法是使用一个缓和的贪婪标记,它匹配除前导和尾随分隔符之外的任何文本。

  • ^'s*D'd+'.node's+'((['d.]+)'):-前导分隔符,匹配:

    • ^-线路的起点
    • 's*-0+空白
    • D-文字D
    • 'd+-1+位
    • '.node-其他字符串.node
    • 's+-1+空白
    • '(-一个(
    • (['d.]+)-第1组匹配1+个数字或文字点
    • '):-文字):
  • ^'s*Success rate is 0'b-与匹配的尾部分隔符

    • ^—线路起点
    • 's*-0+空白
    • Success rate is 0'b-作为一个完整单词匹配的字符序列Success rate is 0(例如,'b阻止匹配03

(?:(?!^'s*(?:D'd+'.node|Success rate is)'s).)*是匹配不是以下序列的起始字符的任何字符(.将匹配任何字符)的调和贪婪令牌:-^'s*-后面有0+个空白的行的开始-(?:D'd+'.node-D后接1+位数字后接.node-|-或-Success rate is)-文字字符串Success rate is-'s-空白