主頁 > 知識庫 > 用正則刪除不包含某個字符串的行的代碼

用正則刪除不包含某個字符串的行的代碼

熱門標簽:山東外呼系統(tǒng)聯(lián)系方式 哈爾濱公司外呼系統(tǒng)代理 自己做的電銷機器人 遼寧秒客來電話機器人 地圖標注店鋪地圖標注酒店 惠安地圖標注 淄博市張店區(qū)地圖標注 浙江營銷外呼系統(tǒng)有哪些 上海銷售電銷機器人軟件
先說一下這個可疑的ip,58.63.144.170,據(jù)說是一個弱智的蜘蛛,上帝保佑它下地獄。

看過apache日志的朋友應(yīng)該知道,apache的訪問日志的每一行是以訪問者的ip開始的。因為日志比較大,所以我是用ultraedit來看的。用ultraedit的時候需要注意,它的正則一共有兩種,一種是符合perl規(guī)范的,而默認的是ut自帶的一種,寫法比較特殊。本文中用到的正則表達式都是perl兼容的,ut中這個選項可以在“高級->配置->搜索->正則表達式引擎”中進行修改。

經(jīng)過一番思索,發(fā)現(xiàn)自己掌握的正則表達式中好象沒有能直接刪除“不包含”一個指定串的用法。思前想后,先寫一個包含指定串的再說吧:^(58.63.144.170).*$,測試一下,可以把包含指定ip的行找出來,接下來要做的就是怎么把這些行保留下來而刪除另外的行。在嘗試了N次以后,我終于放棄了直接刪除不包含這個ip的行的想法。怎么辦呢?退一步海闊天空!既然不能直接刪除,那就迂回一下吧。雖然不能直接刪除不包含指定串的行,但刪除不包含指定字符的正則我還是會寫的:)

先給包含指定ip的行做個標志,這里要用到ut的替換功能。要查找的行:^(58.63.144.170)(.*)。因為日志的每一行都是以數(shù)字開始的,所以我選擇‘%'做為標志的特殊符號,要替換成的正則為:%$1$2。全部替換以后,包含指定ip的行就變成了這個樣子:%58.63.144.170……。接下來,我們再把行首不是‘%'的行刪掉,查找:^[^%].*,替換處為空。執(zhí)行全部替換,日志中只剩下了以‘58.63.144.170'開頭的行,大功告成!等等,剩下的空行太難看,讓我們把它們干掉,查找:^[\r\n]*$,替換處為空,執(zhí)行全部替換,世界終于清靜了...

其實本文中用的正則都是很基本的東西,雖然最終沒能寫出刪除包含指定字符串的行的正則,但在迂回中最終也是現(xiàn)實了想要的功能,而且看上去也更清晰一些。有時候退一步未必不是一個更好的選擇。
您可能感興趣的文章:
  • 正則表達式匹配不包含某些字符串的技巧
  • PHP正則提取不包含指定網(wǎng)址的圖片地址的例子
  • 用正則表達式表示不包含2950的字符串
  • php 正則 不包含某字符串的正則表達式
  • 正則表達式不包含屬性
  • 正則表達式不包含align該怎么寫
  • 使用正則表達式找出不包含特定字符串的條目

標簽:無錫 綿陽 長沙 銅川 泰州 重慶 西安 宣城

巨人網(wǎng)絡(luò)通訊聲明:本文標題《用正則刪除不包含某個字符串的行的代碼》,本文關(guān)鍵詞  用,正則,刪除,不,包含,某個,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《用正則刪除不包含某個字符串的行的代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于用正則刪除不包含某個字符串的行的代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章