利用正則表達式對網路日誌數據進行數據清洗

来源:https://www.cnblogs.com/zhaoke271828/archive/2020/06/25/13193313.html
-Advertisement-
Play Games

原數據: 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 "-" "DNSP ...


原數據:

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、靜態註冊實現開機啟動 1.在之前的連載中,我們編寫的是動態註冊,用到了內部類等。動態註冊只能在程式啟動之後才能生效。接下來我們將要使用靜態註冊的方式進行註冊。(可以舉例開機啟動項) package com.example.broadcasttest2; ​ import android.cont ...
  • 在項目中用 require('./Download.vue') 引入一個組件的時缺少.default 會報錯: Failed to mount component: template or render function not defined <template> <div id="app"> < ...
  • 1. 解決辦法: 當在最後提交的時候,出現的錯誤。 解決辦法: git remote rm origin 執行下麵代碼: git remote add origin https://github.com/haohuihai/tour.git 最後提交到倉庫: git push -u origin m ...
  • 在Canvas API中,上下文CanvasRenderingContext2D對象提供了一個繪製圓與圓弧的方法,其基本格式為: void arc(in float x, in float y, in float radius, in float startAngle, in float endAn ...
  • 在Canvas API中,上下文CanvasRenderingContext2D對象提供了一個與坐標旋轉相關的方法: void rotate(in float angle); // 按給定的弧度順時針旋轉angle 利用rotate()方法可以很方便地將繪製的圖形旋轉。下麵我們通過對正方形進行旋轉變 ...
  • 一、列印char字元 #include<stdio.h> #pragma warning(disable:4996) ​ int D10_1_PrintCharacter(void) { char ch; ​ printf("Please enter a character:\n"); //ch = ...
  • 一、反射 1. 反射機制 反射機制的相關類除了一個java.lang.Class,其餘都在java.lang.reflect包下。反射機制用於讀取class位元組碼文件,需要註意,JVM載入位元組碼到記憶體中時都只會保存一份,多次讀取class文件時不用擔心也會載入多次。反射機制相關的常用類: java. ...
  • 工程的聚合與依賴 1 聚合 當項目是多模塊時,如何一次構建多個模塊,而不是要分別到多個模塊下分別執行Maven命令。 1.1 父子結構 <!--父模塊netsales-poss中的packaging必須為pom--> <packaging>pom</packaging> <!--父模塊netsale ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...