如何使正则表达式仅搜索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]?)
。