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

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

【shell基礎(chǔ)】02、正則表達(dá)式-創(chuàng)新互聯(lián)

一、通配符

創(chuàng)新互聯(lián)是網(wǎng)站建設(shè)技術(shù)企業(yè),為成都企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計、成都網(wǎng)站制作,網(wǎng)站設(shè)計,網(wǎng)站制作,網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。十余年品質(zhì),值得信賴!

   說正則表達(dá)式之前,先回顧一下通配符,很多人總是把正則表達(dá)式和通配符搞混。

通配符是一種特殊的語句,主要包含*和?號(還有{}^!),主要用來模糊搜索文件,使用它替代一個或多個真正的字符,尤其在不確定完整文件名時,用來匹配符合條件的文件。

*    代表任意多個任意字符,包括0個或多個

?   代表任意1個字符

[ ]   代表可匹配所有[ ]內(nèi)包含的任意一個字符,這個符號在通配符和正則表達(dá)式里的用法一樣

     [123] 表示可以匹配到123這三個字符中任意一個

     [1,2,3] 表示可以匹配到123和逗號這四個字符中任意一個

^    這兩個符號往往和[ ]一起使用,代表取反,[^A]就是可以匹配非A的任意的任意一個字符

注意:

    通配符(globbing)是用來匹配文件名的,既限定了字符也指定了范圍

  而正則表達(dá)式是和文本搜索工具一起使用用來匹配文本文件內(nèi)的內(nèi)容,一般以行為單位

二、正則表達(dá)式

1、概述

    正則表達(dá)式(Regular Expression)是一種文本模式,包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為"元字符")。正則表達(dá)式使用單個字符串來描述、匹配一系列匹配某個句法規(guī)則的字符串。

   1956 年, 一位叫 Stephen Kleene 的數(shù)學(xué)家在 McCulloch 和 Pitts 早期工作的基礎(chǔ)上,發(fā)表了一篇標(biāo)題為"神經(jīng)網(wǎng)事件的表示法"的論文,引入了正則表達(dá)式的概念。正則表達(dá)式就是用來描述他稱為"正則集的代數(shù)"的表達(dá)式,因此采用"正則表達(dá)式"這個術(shù)語。

隨后,發(fā)現(xiàn)可以將這一工作應(yīng)用于使用 Ken Thompson 的計算搜索算法的一些早期研究,Ken Thompson 是 Unix 的主要發(fā)明人。正則表達(dá)式的第一個實用應(yīng)用程序就是 Unix 中的 qed 編輯器。

如他們所說,剩下的就是眾所周知的歷史了。從那時起直至現(xiàn)在正則表達(dá)式都是基于文本的編輯器和搜索工具中的一個重要部分。

2、正則表達(dá)式分類

    常見的正則表達(dá)式記法,其實都源于Perl,實際上,正則表達(dá)式從Perl衍生出一個顯赫的流派,叫做PCRE(Perl Compatible Regular Expression),『\d』、『\w』、『\s』之類的記法,就是這個流派的特征。但是在PCRE之外,正則表達(dá)式還有其它流派,比如下面要介紹的POSIX規(guī)范的正則表達(dá)式。

    POSIX的全稱是Portable Operating System Interface for uniX,它由一系列規(guī)范構(gòu)成,定義了UNIX操作系統(tǒng)應(yīng)當(dāng)支持的功能,所以“POSIX規(guī)范的正則表達(dá)式”其實只是“關(guān)于正則表達(dá)式的POSIX規(guī)范”。

   它定義了BRE(Basic Regular Expression,基本型正則表達(dá)式)和ERE(Extended Regular Express,擴(kuò)展型正則表達(dá)式)兩大流派。

   目前,正則表達(dá)式已經(jīng)在很多軟件中得到廣泛的應(yīng)用,包括 *nix(Linux, Unix等)、HP 等操作系統(tǒng),PHP、C#、Java 等開發(fā)環(huán)境,以及很多的應(yīng)用軟件中,都可以看到正則表達(dá)式的影子。

  比如:python提供了Perl 風(fēng)格的正則表達(dá)式模式的re模塊

3、正則表達(dá)式語法

正則表達(dá)式(regular expression)描述了一種字符串匹配的模式,可以用來檢查一個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。

   正則表達(dá)式是由普通字符(例如字符 a 到 z,0到9)以及特殊字符(稱為"元字符")組成的文字模式。模式描述在搜索文本時要匹配的一個或多個字符串。正則表達(dá)式作為一個模板,將某個字符模式與所搜索的字符串進(jìn)行匹配。

普通字符

 普通字符包括沒有顯式指定為元字符的所有可打印和不可打印字符。這包括所有大寫和小寫字母、所有數(shù)字、所有標(biāo)點符號和一些其他符號

元字符(特殊字符)

字符匹配

   所謂元字符,就是一些有特殊含義的字符,許多元字符要求在試圖匹配它們時特別對待。若要匹配這些特殊字符,必須首先使字符"轉(zhuǎn)義",即,將反斜杠字符 (\) 放在它們前面。下表列出了正則表達(dá)式中的特殊字符:

元字符描述
$匹配輸入字符串的結(jié)尾位置。如果設(shè)置了 RegExp 對象的 Multiline 屬性,則 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,請使用 \$。
( )分組標(biāo)記一個子表達(dá)式的開始和結(jié)束位置。子表達(dá)式可以獲取供以后使用。要匹配這些字符,請使用 \( 和 \)。
*匹配前面的子表達(dá)式零次或多次。要匹配 * 字符,請使用 \*。
+匹配前面的子表達(dá)式一次或多次。要匹配 + 字符,請使用 \+。
.匹配除換行符 \n 之外的任何單字符。要匹配 . ,請使用 \. 。
[標(biāo)記一個中括號表達(dá)式的開始。要匹配 [,請使用 \[。
?匹配前面的子表達(dá)式零次或一次,或指明一個非貪婪限定符。要匹配 ? 字符,請使用 \?。
\將下一個字符標(biāo)記為或特殊字符、或原義字符、或向后引用、或八進(jìn)制轉(zhuǎn)義符。例如, 'n' 匹配字符 'n'。'\n' 匹配換行符。序列 '\\' 匹配 "\",而 '\(' 則匹配 "("。
^匹配輸入字符串的開始位置,除非在方括號表達(dá)式中使用,此時它表示不接受該字符集合。要匹配 ^ 字符本身,請使用 \^。
{標(biāo)記限定符表達(dá)式的開始。要匹配 {,請使用 \{。
|指明兩項之間的一個選擇。要匹配 |,請使用 \|。逐單詞而不是逐字符

[]  匹配方括號內(nèi)出現(xiàn)的任一字符,比如說單向選擇題的答案,可能是ABCD選項中的任意一種,用正則表達(dá)式表示就是[ABCD],如果遇到比較大范圍的匹配,就需要使用“-”號做范圍限定如[a-z]表示所有的小寫字母,一直要注意,這里“-”號不是單一個字符

[^]  指定范圍外的任意單個字符

常用的字符集合:

[a-z]  所有小寫字母;注意在文件名通配中是表示所有字母,包括大小寫,在正則表達(dá)式中只表示小寫

[A-Z],[0-9],[a-zA-Z0-9],[^a-zA-Z0-9],[a-z_\-]

[:lower:],[:upper:],[:alpha:][:digit:],[:alnum:]

[:punct:] 所有符號

[:space:] 所有空白字符,包括空格、制表符、換頁符等等;等價于 [ \f\n\r\t\v],不包括空白行

\d:任意一個數(shù)字

\D:任意一個非數(shù)字

\w:匹配字母,數(shù)字和下劃線,等價于[[:alnum:]_]

\W:匹配非字母、非數(shù)字、非下劃線,等價于[^[:alnum:]_]

\s:匹配任何空白字符,包括空格、制表符、換頁符等等;等價于 [ \f\n\r\t\v],不包括空白行,

\S:匹配任何非空白字符,等價于 [^ \f\n\r\t\v]

[\d],[\D],[\s],[\w]也是可以用的

限定符

 次數(shù)匹配

   限定符用來指定正則表達(dá)式的一個給定組件必須要出現(xiàn)多少次才能滿足匹配。有*或+或?或{n}或{n,}或{n,m}共6種。

正則表達(dá)式的限定符有:

字符描述
*匹配前面的子表達(dá)式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價于{0,}。
+匹配前面的子表達(dá)式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價于 {1,}。
?匹配前面的子表達(dá)式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等價于 {0,1}。
{n}n 是一個非負(fù)整數(shù)。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o。
{n,}n 是一個非負(fù)整數(shù)。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價于 'o+'。'o{0,}' 則等價于 'o*'。
{n,m}m 和 n 均為非負(fù)整數(shù),其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 將匹配 "fooooood" 中的前三個 o。'o{0,1}' 等價于 'o?'。請注意在逗號和兩個數(shù)之間不能有空格。

*、+和?限定符都是貪婪的,因為它們會盡可能多的匹配文字,只有在它們的后面加上一個?就可以實現(xiàn)非貪婪或最小匹配。

通過在 *、+ 或 ? 限定符之后放置 ?,該表達(dá)式從"貪心"表達(dá)式轉(zhuǎn)換為"非貪心"表達(dá)式或者最小匹配。

定位符

   位置匹配

    定位符使您能夠?qū)⒄齽t表達(dá)式固定到行首或行尾。這些正則表達(dá)式出現(xiàn)在一個單詞內(nèi)、在一個單詞的開頭或者一個單詞的結(jié)尾。

定位符用來描述字符串或單詞的邊界,^和$分別指字符串的開始與結(jié)束,\b描述單詞的前或后邊界,\B表示非單詞邊界。

正則表達(dá)式的限定符有:

字符描述
^匹配輸入字符串開始的位置。如果設(shè)置了 RegExp 對象的 Multiline 屬性,^ 還會與 \n 或 \r 之后的位置匹配。
$匹配輸入字符串結(jié)尾的位置。如果設(shè)置了 RegExp 對象的 Multiline 屬性,$ 還會與 \n 或 \r 之前的位置匹配。
\b或者\<,\>匹配一個字邊界,即字與空格間的位置。
\B非字邊界匹配。

注意:不能將限定符與定位點一起使用。由于在緊靠換行或者字邊界的前面或后面不能有一個以上位置,因此不允許諸如 ^* 之類的表達(dá)式。

反向引用

   對一個正則表達(dá)式模式或部分模式兩邊添加圓括號將導(dǎo)致相關(guān)匹配存儲到一個臨時緩沖區(qū)中,所捕獲的每個子匹配都按照在正則表達(dá)式模式中從左到右出現(xiàn)的順序存儲。緩沖區(qū)編號從 1 開始,最多可存儲 99 個捕獲的子表達(dá)式。每個緩沖區(qū)都可以使用 '\n' 訪問,其中 n 為一個標(biāo)識特定緩沖區(qū)的一位或兩位十進(jìn)制數(shù)。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


分享名稱:【shell基礎(chǔ)】02、正則表達(dá)式-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://weahome.cn/article/ijded.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部