regex 寻找一个正则表达式,将找到一个或多个字后的IP地址

guicsvcw  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(158)

给定以下结构ID的行:'560'",,10.117.219.156,Browser,fa7a0434 -8f0a-47f2-a3ea-3864d652a042,NAME:
我希望提取IP地址(任何IP)和“,”后面的单词或单词,直到“,”。在这个例子中,返回的单词是“Browser”。
以下是我迄今为止最好的:(?<=,)(\d+)\.(\d+)\.(\d+)\.(\d+),\w+(?=,)
上面的表达式对'逗号'执行正向后查找,然后捕获类似于IP地址“(\d+).(\d+).(\d+).(\d+)”的组,然后是'逗号',然后是感兴趣的单词,然后是'逗号'。
问题是正则表达式返回了我不想要的IP地址。这是我跑步时得到的反馈:grep -Po '(?<=,)(\d+)\.(\d+)\.(\d+)\.(\d+),\w+(?=,)' /c/tmp/BB1.csv

10.117.245.154,Browser
10.123.33.66,PyCharm IDE
10.117.245.123,Calculator HP

我想要的是:浏览器PyCharm IDE计算器HP

mrzz3bfm

mrzz3bfm1#

你可以用

grep -Po ',\d+(?:\.\d+){3},\K[^,]+' /c/tmp/BB1.csv

参见regex demo。* 详情 *:

  • ,-逗号
  • \d+-一个或多个数字
  • (?:\.\d+){3}-.出现三次,然后出现一个或多个数字
  • ,-逗号
  • \K-match reset operator,从整个匹配内存缓冲区中丢弃迄今为止匹配的所有文本
  • [^,]+-逗号以外的一个或多个字符。

相关问题