利用正则表达式对网络日志数据进行数据清洗

Posted zhaoke271828

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用正则表达式对网络日志数据进行数据清洗相关的知识,希望对你有一定的参考价值。

原数据:

183.49.46.228 - - [18/Sep/2013:06:49:23 +0000] "-" 400 0 "-" "-"
163.177.71.12 - - [18/Sep/2013:06:49:33 +0000] "HEAD / HTTP/1.1" 200 20 "-" "DNSPod-Monitor/1.0"
163.177.71.12 - - [18/Sep/2013:06:49:36 +0000] "HEAD / HTTP/1.1" 200 20 "-" "DNSPod-Monitor/1.0"
101.226.68.137 - - [18/Sep/2013:06:49:42 +0000] "HEAD / HTTP/1.1" 200 20 "-" "DNSPod-Monitor/1.0"
101.226.68.137 - - [18/Sep/2013:06:49:45 +0000] "HEAD / HTTP/1.1" 200 20 "-" "DNSPod-Monitor/1.0"
60.208.6.156 - - [18/Sep/2013:06:49:48 +0000] "GET /wp-content/uploads/2013/07/rcassandra.png HTTP/1.0" 200 185524 "http://cos.name/category/software/packages/" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/29.0.1547.66 Safari/537.36"
222.68.172.190 - - [18/Sep/2013:06:49:57 +0000] "GET /images/my.jpg HTTP/1.1" 200 19939 "http://www.angularjs.cn/A00n" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36"
222.68.172.190 - - [18/Sep/2013:06:50:08 +0000] "-" 400 0 "-" "-"

 

所需正则表达式

IP地址:

\d+[.]\d+[.]\d+[.]\d+

其中 "\d+"表示任意连续数字,"[.]"表示点号,由于在正则表达式中"."通常表示通配符,因此点号加一个中括号

 

时间:

\d+/[A-Za-z]+/\d+:\d+:\d+:\d+

中间加入"[A-Za-z]+"表示任意连续字母,因为这里月份用Jan,Feb, Mar...表示的

 

网络资源:

"[a-zA-Z]+[^"]+"

"[^"]+"表示连续非引号,也就是匹配直到遇到一个引号,"^"表示非

 

Java语言的正则表达式使用(以匹配IP地址为例):

        // 解析正则表达式
        Pattern pip = Pattern.compile("\d+[.]\d+[.]\d+[.]\d+");
        // 正则表达式匹配字符串line
        Matcher mip = pip.matcher(line);
        // 如果匹配到一个目标串
        if(mip.find()){
            /// 就获取该目标串
            ip=mip.group();
        }else{
            System.out.println("not found");
        }

Matcher.find()表示进行一次匹配,这里只进行了一次匹配也就是只匹配line中的第一个目标串IP地址

通常要获得所有的目标串,应该用while,

while(mip.find()){
    System.out.println(mip.group());    
}

 

其他的比如时间,网络资源,流量,访问状态码都可以如此操作

 

-----------------------------------

author: ZKe

以上是关于利用正则表达式对网络日志数据进行数据清洗的主要内容,如果未能解决你的问题,请参考以下文章

数据清洗 常用正则表达式大全

正则表达式UltraEdit / MySQL / 数据清洗

正则表达式UltraEdit / MySQL / 数据清洗

爬取知乎热度搜索标题并数据分析及可视化

Python3正则表达式清洗Excel文档

Spark-ETL日志数据清洗分析项目(上)--个人学习解析(保姆级)