如何使正则表达式仅搜索ipv4地址?



如何使正则表达式仅搜索ipv4地址。 当我在做

grep -E '([0-9].){1,3}[0-9]b filename

它也显示了具有五个八位字节的组。

我怀疑它是否可以用 POSIX 正则表达式完成,因此我宁愿建议使用 PCRE 解决方案:

grep -P '(?<!d.|d)d{1,3}(?:.d{1,3}){3}(?!.?d)' filename

模式匹配

  • (?<!d.|d)- 不紧接数字和点或仅以数字开头
  • 的位置
  • d{1,3}- 1 到 3 位数字
  • (?:.d{1,3}){3}- 出现三次
    • .- 一个点
    • d{1,3}- 1 到 3 位数字
  • (?!.?d)- 不紧跟可选点然后是数字的位置。

为了使模式更精确一些,请将八位字节模式(d{1,3}(替换为(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)

最新更新