323 字
2 分钟
正则表达式小记
2019-04-10

问题#

正则表达式好像永远都用不熟的。(应该是用的频率不够高,所以总是碰到了就需要找网上的资料,要是没有就得看正则表达式的帮助)

其实是一个经常用的场景,就是删除带有特定关键字的行。

前天做了个记录本机DNS查询和应答的小程序,运行结束后会写文本文件,记录这些信息。

现在我需要删除所有应答的条目,我只想看电脑在这段时间内query了什么.

程序获得的记录如下:

Terminal window
query dns name: go.microsoft.com
query dns name: go.microsoft.com
answer ip address is CNAME go.microsoft.com.edgekey.net
answer ip address is CNAME e11290.dspg.akamaiedge.net
answer ip address is 23.219.16.121
query dns name: sbsdomains.blob.core.windows.net
query dns name: sbsdomains.blob.core.windows.net
answer ip address is CNAME blob.chi21prdstr03a.store.core.windows.net
answer ip address is 52.239.186.132

我想要将所有带IP地址的都给取掉。

方法#

使用替换的方式,用正则表达式进行筛选,然后替换为空行

  • 最简单的就是将带有“ip address”的行给取掉

    ^.*ip address.*\r?\n

    直接将带有ip address的行给替换为空行,然后清理掉,这个会将answer为CNAME的也给干掉

  • 过滤带有实际的IP地址的行

    Terminal window
    ^.*((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))).){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))).*\r?\n

等会儿将输出的时候用log的形式,加上时间戳

正则表达式小记
https://dididudu998.github.io/posts/正则表达式小记录/
作者
滴滴嘟嘟
发布于
2019-04-10
许可协议
CC BY-NC-SA 4.0