真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Shell中正則表達(dá)式怎么用

這篇文章主要介紹Shell中正則表達(dá)式怎么用,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、靈寶網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5、商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為靈寶等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

正則表達(dá)式


    正則表達(dá)式:編寫處理字符串的程序或網(wǎng)頁時(shí),用于描述查找符合某些復(fù)雜規(guī)則的字符串的工具。換句話說,就是文本規(guī)則的代碼。
     正則表達(dá)式與通配符類似,是一種進(jìn)行文本匹配的工具,但是它可以更精確的描述匹配需求。常見的支持正則表達(dá)式的工具有:匹配文本行的 grep 工具族;改變輸入流的 sed 流編輯器;處理字符串的語言 awk、python、perl、Tcl 等;文件查看程序或分頁程序 more、page、less 等;文本編輯器 ed、vi、emacs、vim 等。
     正則表達(dá)式內(nèi)部有多種方法嵌入注釋,因此它具有自文檔化(self-documenting)的能力。
     \b 是正則表達(dá)式的一個(gè)特殊代碼(元字符,meta character),代表單詞的開頭或者結(jié)尾,也就是單詞的分界處。通常英文的單詞是由 空格、標(biāo)點(diǎn)符號或者換行來分隔的,但是 \b 并不匹配它們中的任何一個(gè),只匹配一個(gè)“位置” - 這個(gè)位置的前一個(gè)字符和后一個(gè)字符不全是(一個(gè)是,一個(gè)不是或不存在) \w?!?”是另一個(gè)元字符,匹配除了換行符以外的任意字符,“*”指定它之前的內(nèi)容可以連續(xù)重復(fù)出現(xiàn)任意次。“.*”就表示任意數(shù)量的不包含換行的字符。“\d”元字符匹配一位數(shù)字(0 或者 1 或者 2 ……),\d{n}表示“\d”必須連續(xù)重復(fù)匹配 n 次。
     歷史上曾經(jīng)出現(xiàn)過三種 grep,它們都可以用于匹配文本:Grep 是最早的文本匹配程序,使用 POSIX 支持的基本正則表達(dá)式(Basic Regular Expression,BRE);Egrep 是擴(kuò)展的 grep(Extended grep),使用擴(kuò)展正則表達(dá)式(Extended Regular Expression,ERE);Fgrep 是快速 grep(Fast grep),用于匹配固定字符而不是正則表達(dá)式。1992 年發(fā)布的 POSIX(The Portable Operating System Interface) 標(biāo)準(zhǔn)中,三個(gè)版本合而為一。fgrep 和 egrep 可以在所有 UNIX/Linux 系統(tǒng)上使用,但是被標(biāo)記為 deprecated(不推薦)。
     從最基本的角度將,正則中有元字符(特殊字符)和一般字符匹配這兩種基本字符匹配。一般字符指沒有任何特殊意義的字符,而元字符則被賦予了某些特殊含義。

Shell中正則表達(dá)式怎么用

Shell中正則表達(dá)式怎么用

Shell中正則表達(dá)式怎么用

     POSIX 標(biāo)準(zhǔn)中 BRE 和 ERE 支持的 meta 字符有相同也有差異;而 Linux 使用的 GNU 版本的 grep 則功能更強(qiáng),并且可以通過 -G、-E、-F 選項(xiàng)使用 egrep 和 fgrep 功能。

Shell中正則表達(dá)式怎么用

     在 Linux 下的 grep,除了 fgrep 之外,都支持 POSIX 的特殊字符類。其中字符集(POSIX Character class)是以 ‘[:’和‘:]’括起來的字符,而且需要放到 [] 內(nèi)才能成為正則表達(dá)式,例如 [A-Za-z0-9] 與 [[:alnum:]] 等價(jià);排序符號(Collating symbol)是以‘[.’和‘.]’括起來的字符,將多個(gè)字符序列視為一個(gè)元素,例如 [.cn.] 表示 cn 字符序列;等價(jià)字符集(Equivalence class)表示應(yīng)視為等值的一族字符,使用‘[=’和‘=]’將字符括起來。正則表達(dá)式允許將 POSIX 字符集與其他字符集混用,例如 [[:alpha:]!] 匹配任意一個(gè)英文字母或者感嘆號。

Shell中正則表達(dá)式怎么用

     上圖中,使用了 [[:digit:]_]+ 正則表達(dá)式,它匹配一個(gè)或多個(gè)“數(shù)字字符或下劃線”,使用 -E 參數(shù)來支持 ERE。
     匹配單個(gè)字符有四種方式:一般字符、轉(zhuǎn)義的 meta 字符、點(diǎn)號‘.’meta 字符、方括號表達(dá)式。一般字符指未列于表 4-1 中的字符,包括文字和數(shù)字字符、空白字符和標(biāo)點(diǎn)符號字符,一般字符匹配自身,例如正則 china 就匹配單詞 china 而不是 China,如果想要同時(shí)匹配需要用方括號表達(dá)式。表 4-1 中列出了一些 meta 字符,表示一些特殊情況下的含義,當(dāng) meta 字符無法表示自己,而又需要這些字符時(shí),就要用轉(zhuǎn)義字符,將轉(zhuǎn)義字符置于一般字符前,轉(zhuǎn)義字符本身會(huì)被忽略。點(diǎn)號字符表示任一字符,很少單獨(dú)使用點(diǎn)號符,經(jīng)常與其他 meta 字符混用來匹配多個(gè)字符。方括號表達(dá)式(bracket expression)用以匹配不同的情況,例如 [cC]hina 只匹配 china 和 China,[^abc] 匹配除了 abc 意外的任意字符,同時(shí)在方括號表達(dá)式中,所有其他的 meta 字符都會(huì)失去含義,例如 [\.] 匹配反斜杠和點(diǎn)號,而不是匹配句點(diǎn)。
     在基本正則表達(dá)式中,最簡單的表示多個(gè)字符的方法是將多個(gè)字符連接起來。但是這種方法局限很多,而修飾符 meta 的應(yīng)用提供了靈活的匹配能力。其中星號(*)meta 字符匹配 0 個(gè)或多個(gè)星號前的單個(gè)字符。區(qū)間表達(dá)式可以匹配指定字符的重復(fù)次數(shù),例如 ab\{3\}c 匹配 a 和 c 之間的 b 重復(fù)出現(xiàn)三次,ab\{3,\}c 匹配 b 重復(fù)出現(xiàn)至少三次,ab\{3,5\}c 匹配 b 重復(fù)出現(xiàn)三次到五次。ERE 在匹配多個(gè)字符時(shí)與 BRE 很相似,但是支持更多的表達(dá)式,但 ERE 中的區(qū)間表達(dá)式不需要轉(zhuǎn)義字符,它的 \{ 和 \} 僅表示花括號本身。在 ERE 中,? 匹配 0 個(gè)或一個(gè)前置正則表達(dá)式,+ 匹配一個(gè)或多個(gè)前置正則表達(dá)式,例如 ab?c 只匹配 ac 和 abc,ab+c 匹配 abc、abbc、abbbc…… 而不匹配 ac。
     錨點(diǎn)字符(^ 和 $)用于匹配字符串的開頭和結(jié)尾,^ 和 $ 一起使用,則兩者之間的正則表達(dá)式匹配了整個(gè)正則表達(dá)式或整行,而 ^$ 匹配空的字符串或空行。BRE 中錨點(diǎn)僅僅在正則表達(dá)式的開始和結(jié)尾處才是 meta 字符,而在正則表達(dá)式中的錨點(diǎn)字符僅僅代表它自身,ERE 中錨點(diǎn)字符永遠(yuǎn)是 meta 字符,正則表達(dá)式中包含的錨點(diǎn)字符有意義,只是無法匹配上任何字符串,例如 abc^defg 在 BRE 中匹配字符串“abc^def”,而在 ERE 中永遠(yuǎn)也匹配不上任何東西。
     

Shell中正則表達(dá)式怎么用

Shell中正則表達(dá)式怎么用

     運(yùn)算符優(yōu)先級指在不同的 meta 字符同時(shí)出現(xiàn)時(shí),高優(yōu)先級的 meta 字符將比低優(yōu)先級的先處理。
     BRE 中提供了一種機(jī)制名為“后向引用”(backreference),用于匹配之前正則表達(dá)式選定的部分。\1 - \9 引用之前選定的模式,‘\(’和‘\)’括起想要之后引用的部分。例如 \(ab\)\(cd\)[efg]*\1\2 匹配 abcdabcd、abcdeabcd、abcdfabcd、abcdgabcd,\(go\).*\1 匹配一行中前后出現(xiàn)兩個(gè) go。
     交替是 ERE 才有的特性,當(dāng)使用方括號表達(dá)式時(shí),交替表示可以“匹配這個(gè)字符,或者那個(gè)字符”,但是無法“匹配這個(gè)字符序列或那個(gè)字符序列”。交替是在不同序列之間用管道符號隔開,例如 you|me 匹配 you 或 me。交替字符可以和管道符號意義在一個(gè)正則表達(dá)式中使用多個(gè)來提供多種選擇。因?yàn)樗膬?yōu)先級最低,所以會(huì)一直擴(kuò)展到新的交替字符,或正則表達(dá)式結(jié)束為止。
     在 BRE 中,使用一些 meta 字符修飾前置字符匹配重復(fù)的情況,但是僅僅只針對單個(gè)字符。在 ERE 中分組功能使 meta 字符修飾前置字符串,通過‘()’將式子括起來,例如(go)+ 匹配一個(gè)或多個(gè)連續(xù)的 go。在使用交替時(shí),分組非常有用,例如(Lily|Lucy)限定了匹配 Lily 或 Lucy。

以上是“Shell中正則表達(dá)式怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)站欄目:Shell中正則表達(dá)式怎么用
標(biāo)題鏈接:http://weahome.cn/article/gddpds.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部