成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

正則表達(dá)式基礎(chǔ)學(xué)習(xí)筆記

IT那活兒 / 1197人閱讀
正則表達(dá)式基礎(chǔ)學(xué)習(xí)筆記

點(diǎn)擊上方“IT那活兒”,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。?!

“父兮生我,母兮鞠我……欲報(bào)之德,昊天罔極”。母親節(jié),給母親獻(xiàn)一束什么花?

——無(wú)論是堂前萱草花,還是一捧康乃馨,都是對(duì)母親的愛(ài)與感念。

今日將昨日之所學(xué)整理分享給大家。



什么是正則表達(dá)式

正則表達(dá)式,又稱規(guī)則表達(dá)式。(英語(yǔ):Regular Expression,在代碼中常簡(jiǎn)寫為regex、regexp或RE),正則表達(dá)式是對(duì)字符串(包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為“元字符”))操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個(gè)“規(guī)則字符串”,這個(gè)“規(guī)則字符串”用來(lái)表達(dá)對(duì)字符串的一種過(guò)濾邏輯。



正則表達(dá)式的特點(diǎn)


正則表達(dá)式的特點(diǎn)是:

  • 靈活性、邏輯性和功能性非常強(qiáng);

  • 可以迅速地用極簡(jiǎn)單的方式達(dá)到字符串的復(fù)雜控制。

  • 對(duì)于剛接觸的人來(lái)說(shuō),比較晦澀難懂。



業(yè)務(wù)場(chǎng)景

1. syslog事件標(biāo)準(zhǔn)化

syslog內(nèi)容如下:

2011 Mar 24 11:51:48 CHN: %ETHPORT-5-IF_DOWN_LINK_FAILURE: Interface Ethernet13/29 is down (Link failure)

2. 自動(dòng)巡檢正則匹配

統(tǒng)計(jì)CPU空閑率:sar 3 10命令中的system列和iowait列的average值。

如下圖:

通過(guò)工具測(cè)試正則表達(dá)式的功能,并將表達(dá)式用于到JavaScript編寫相應(yīng)的巡檢腳本。



正則表達(dá)式測(cè)試工具

在編寫或測(cè)試正則表達(dá)式時(shí)常用RegexBuddy。



正則表達(dá)式規(guī)則

1. 普通字符

字母、數(shù)字、漢字、下劃線、以及后邊章節(jié)中沒(méi)有特殊定義的標(biāo)點(diǎn)符號(hào),都是"普通字符"。表達(dá)式中的普通字符,在匹配一個(gè)字符串的時(shí)候,匹配與之相同的一個(gè)字符。

舉例1:

表達(dá)式 "27",在匹配字符串 " 9527test:failed" 時(shí),匹配結(jié)果如下圖:

舉例2:

表達(dá)式 "f",在匹配字符串 " 9527test:failed " 時(shí),匹配結(jié)果如下圖:

2. 元字符

常見(jiàn)的元字符如下表:

舉例1:

表達(dá)式 "[^A-Z]",在匹配字符串 "FAS3207" 時(shí),只能匹配其中任意一個(gè)字符(3或者2或者0或者7),匹配結(jié)果如下圖:

舉例2:

表達(dá)式 "d+.?d*" 匹配字符串:

  • CPUUtil:99.23

  • MemoryUsage:33.44

  • version:2.0

匹配結(jié)果如下圖:

3. 貪婪與非貪婪模式

1)貪婪模式

在使用修飾匹配次數(shù)的特殊符號(hào)時(shí),有幾種表示方法可以使同一個(gè)表達(dá)式能夠匹配不同的次數(shù),比如:"{m,n}", "{m,}", "?", "*", "+",具體匹配的次數(shù)隨被匹配的字符串而定。這種重復(fù)匹配不定次數(shù)的表達(dá)式在匹配過(guò)程中,總是盡可能多的匹配。

比如,針對(duì)文本 "failed",舉例如下:

由此可見(jiàn),"w+" 在匹配的時(shí)候,總是盡可能多的匹配符合它規(guī)則的字符。雖然第二個(gè)舉例中,它沒(méi)有匹配最后一個(gè) "d",但那也是為了讓整個(gè)表達(dá)式能夠匹配成功。

同理,帶 "*" 和 "{m,n}" 的表達(dá)式都是盡可能地多匹配,帶 "?" 的表達(dá)式在可匹配可不匹配的時(shí)候,也是盡可能的 "要匹配"。這 種匹配原則就叫作 "貪婪" 模式 。

2)非貪婪模式

在修飾匹配次數(shù)的特殊符號(hào)后再加上一個(gè) "?" 號(hào),則可以使匹配次數(shù)不定的表達(dá)式盡可能少的匹配,使可匹配可不匹配的表達(dá)式,盡可能的 "不匹配"。這種匹配原則叫作 "非貪婪" 模式,也叫作 "勉強(qiáng)" 模式。

如果少匹配就會(huì)導(dǎo)致整個(gè)表達(dá)式匹配失敗的時(shí)候,與貪婪模式類似,非貪婪模式會(huì)最小限度的再匹配一些,以使整個(gè)表達(dá)式匹配成功。

舉例如下,針對(duì)文本 "failed" 舉例:

效果圖如下:

舉例1-非貪婪模式:

表達(dá)式( .*)+?( ) 匹配字符串。

"10103006020" NAME="F5新建連接數(shù)" RESCLASS="ResSwitch">

<OID ID="3002" VENDER="F5"/>

KPI>

"10103006021" NAME="F5客戶端入流量" RESCLASS="ResSwitch">

<OID ID="3003" VENDER="F5"/>

KPI>

"10103006022" NAME="F5客戶端出流量" RESCLASS="ResSwitch">

<OID ID="3004" VENDER="F5"/>

KPI>


如下圖:

舉例2-貪婪模式:

表達(dá)式( .*)+( ),匹配舉例1的字符串,如下圖:

總結(jié):邊界匹配的地方,如xml文件中的,盡量使用簡(jiǎn)捷的非貪婪匹配.*?特別是對(duì)于復(fù)雜的表達(dá)式來(lái)說(shuō),采用非貪婪匹配.*?寫出來(lái)的表達(dá)式簡(jiǎn)練一些。



業(yè)務(wù)場(chǎng)景實(shí)現(xiàn)

1. syslog解析

syslog常用來(lái)記錄設(shè)備(網(wǎng)絡(luò)設(shè)備/主機(jī))的狀態(tài)改變信息,如網(wǎng)絡(luò)接口的狀態(tài)、主機(jī)系統(tǒng)的狀態(tài)事件等,如下是網(wǎng)絡(luò)設(shè)備接口宕掉后產(chǎn)生的一條syslog事件:

2011 Mar 24 11:51:48 CHN: %ETHPORT-5-IF_DOWN_LINK_FAILURE: Interface Ethernet13/29 is down (Link failure)

由于syslog事件的內(nèi)容生澀,故通過(guò)正則表達(dá)式解析并提取指定的字符串,標(biāo)準(zhǔn)化成清晰可讀的事件,如下是通過(guò)NMS的標(biāo)準(zhǔn)化后的事件內(nèi)容:

協(xié)議宕在節(jié)點(diǎn) XXX.XXX.17.98的接口Ethernet13/29, 狀態(tài)為down,發(fā)生時(shí)間2011 Mar 24 11:51:48,故障類型:%ETHPORT-5-IF_DOWN_LINK_FAILURE

在上述的標(biāo)準(zhǔn)事件中,提取了原始syslog中部分字符串(紅色字體部分)。

1)syslog正則表達(dá)式實(shí)現(xiàn)

模式匹配以元字符來(lái)匹配字符串文本,如下介紹使用轉(zhuǎn)義字符的方式來(lái)使用正則元字符,轉(zhuǎn)義字符通常是一個(gè)反斜線加上一個(gè)字母組成。

使用括號(hào)()將匹配結(jié)果標(biāo)記為一個(gè)group。

完整的正則表達(dá)式如下:

(d+s+w+s+d+s+d+:d{2}:d{2})s+w+.s+(S+):s+S+s+(S+)s+iss+(S+)(.*|s)+?

2)RegexBuddy測(cè)試效果

Group1、2、3、4、5分別表示字符串中需要的引用,如下圖:

2. 巡檢結(jié)果匹配

在巡檢產(chǎn)品中,需要對(duì)巡檢命令的輸出結(jié)果做正則分析,析取出指定的內(nèi)容,如下是Linux平臺(tái)查看CPU使用情況的巡檢命令及輸出:

1)解析實(shí)現(xiàn)

這里需要匹配Average一行的%system列的值0.02以及%iowait的值0.00,這里可以用如下正則表達(dá)式寫法:

[0-9]+等價(jià)于d+ 表示匹配0到9之間的任意一個(gè)數(shù)字,+表示匹配1個(gè)或多個(gè),{2}表示匹配兩個(gè)結(jié)果。

完整的表達(dá)式如下:Average:s+[0-9]+.[0-9]{2}s+[0-9]+.[0-9]{2}

2)RegexBuddy測(cè)試效果

圓括號(hào)()用來(lái)標(biāo)記group,并以數(shù)字按序引用。在自動(dòng)巡檢中,使用JavaScripts分析正則表達(dá)式,故使用$1和$2表示第一個(gè)和第二個(gè)group。

注:在正則表達(dá)式中,最多能引用9個(gè)group。

如上述的正則表達(dá)式匹配Avarage一行中的%system和%iowait數(shù)值。

 



END



 

 


本文作者:董有知

本文來(lái)源:IT那活兒(上海新炬王翦團(tuán)隊(duì))

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/129525.html

相關(guān)文章

  • JavaScript正則達(dá)式學(xué)習(xí)筆記(二) - 打怪升級(jí)

    摘要:本文接上篇,基礎(chǔ)部分相對(duì)薄弱的同學(xué)請(qǐng)移步正則表達(dá)式學(xué)習(xí)筆記一理論基礎(chǔ)。正則表達(dá)式標(biāo)志符全局匹配,即找到所有匹配的。方法返回結(jié)果的格式不一致問(wèn)題這個(gè)問(wèn)題上文正則表達(dá)式學(xué)習(xí)筆記一理論基礎(chǔ)也有體現(xiàn),這里再單獨(dú)拿來(lái)說(shuō)一說(shuō),以加深記憶。 showImg(https://segmentfault.com/img/remote/1460000014261596?w=600&h=338); 本文接上篇...

    Jioby 評(píng)論0 收藏0
  • es5學(xué)習(xí)筆記——拜讀JavaScript高級(jí)程序設(shè)計(jì)(持續(xù)更新)

    摘要:當(dāng)以非構(gòu)造函數(shù)形式被調(diào)用時(shí),等同于。并且,函數(shù)執(zhí)行完畢后,其活動(dòng)對(duì)象不會(huì)被銷毀,因?yàn)槟涿瘮?shù)的作用域鏈仍然在引用這個(gè)活動(dòng)對(duì)象。知道閉包被銷毀,創(chuàng)建函數(shù)的活動(dòng)對(duì)象才會(huì)被回收。 本著盡可能多的完善基礎(chǔ)知識(shí),打好基礎(chǔ),做一條有夢(mèng)想的咸魚。 1.數(shù)據(jù)類型 基本數(shù)據(jù)類型:Undefined,Null,Boolean,Number,String,一種復(fù)雜數(shù)據(jù)類型Object 2.typeof操...

    reclay 評(píng)論0 收藏0
  • 正則達(dá)式

    摘要:本文內(nèi)容共正則表達(dá)式火拼系列正則表達(dá)式回溯法原理學(xué)習(xí)正則表達(dá)式,是需要懂點(diǎn)兒匹配原理的。正則表達(dá)式迷你書問(wèn)世了讓幫你生成和解析參數(shù)字符串最全正則表達(dá)式總結(jié)驗(yàn)證號(hào)手機(jī)號(hào)中文郵編身份證地址等是正則表達(dá)式的縮寫,作用是對(duì)字符串執(zhí)行模式匹配。 JS 的正則表達(dá)式 正則表達(dá)式 一種幾乎可以在所有的程序設(shè)計(jì)語(yǔ)言里和所有的計(jì)算機(jī)平臺(tái)上使用的文字處理工具。它可以用來(lái)查找特定的信息(搜索),也可以用來(lái)查...

    bang590 評(píng)論0 收藏0
  • 重磅 | 完備的 AI 學(xué)習(xí)路線,最詳細(xì)的資源整理!

    摘要:是你學(xué)習(xí)從入門到專家必備的學(xué)習(xí)路線和優(yōu)質(zhì)學(xué)習(xí)資源。的數(shù)學(xué)基礎(chǔ)最主要是高等數(shù)學(xué)線性代數(shù)概率論與數(shù)理統(tǒng)計(jì)三門課程,這三門課程是本科必修的。其作為機(jī)器學(xué)習(xí)的入門和進(jìn)階資料非常適合。書籍介紹深度學(xué)習(xí)通常又被稱為花書,深度學(xué)習(xí)領(lǐng)域最經(jīng)典的暢銷書。 showImg(https://segmentfault.com/img/remote/1460000019011569); 【導(dǎo)讀】本文由知名開(kāi)源平...

    荊兆峰 評(píng)論0 收藏0
  • js正則達(dá)式學(xué)習(xí)筆記

    摘要:分組小括號(hào)功能較多有三種功能,作用一,把單獨(dú)的項(xiàng)組合成子表達(dá)式。作用三,允許后面引用前面的表達(dá)式。如果這時(shí)的正則表達(dá)式是一個(gè)非全局的,那么和正則表達(dá)式方法拿到的結(jié)果相同。,也可以接受一個(gè)正則表達(dá)式作為參數(shù)。 正則表達(dá)式創(chuàng)建字面量創(chuàng)建,a = /abc/gim;構(gòu)造函數(shù)創(chuàng)建,a = new RegExp(abc,gim)正則表達(dá)式中的特殊字符,[...] 方括號(hào)中的任意字符[^...] ...

    superPershing 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<