正則表達式描述一種字符串匹配模式,可用於檢查字符串是否包含某個子字符串、替換匹配的子字符串或從字符串中提取限定的子字符串等。
FIV:
runoo+b,能夠與runoob、runooob、runooob等匹配,+符號表示前面的字符必須至少出現一次(一次或屢次)。
runoo*b,能夠配置runob、runoob、runooob等,*符號不能出現,也能夠出現一次或屢次(0、1或屢次)。
什麼?R能和顏色匹配嗎?問題編號表示前一個字符最多隻能出現一次(0或1)。
構造正則表達式與建立數學表達式相同。也就是說,小表達式能夠與多個元字符和運算符組合,以建立更大的表達式。正則表達式的組合能夠是單個字符、字符集、字符範圍、字符之間的選擇或全部這些組合的任意組合。
正確的表達式是由普通字符(如字符A到Z)和特殊字符木浴桶(稱爲元字符)組成的文本模式。模式描述搜索文本時要匹配的一個或多個字符串。正確的表達式充當模板,以匹配搜索字符串的字符模式。
臨時抵押
經常使用字符包括全部未指定爲元字符的可打印和不可打印字符。這包括全部大寫和小寫字母、全部數字、全部標點符號和一些其餘符號。
遠程學習
非打印字符也能夠是正確表達式的一部分。下表列出了非打印字符的轉換順序:
大赦
\ C x配置X指定的控制字符。例如,C m配置Control-M或回車。x的值必須是a-z或a-z中的一個。不然,請將c視爲已定義的「c」字符。
\ f匹配分頁符。等效毒性0c和cl.
\ n匹配換行符。等效毒性0a和cj。
\ R匹配回車。等效毒性0d和cm。
\ s匹配任何空白字符,包括空格、製表符、分頁符等,至關於[f n r t v]。請注意,Unicode的正確表達式與全角度空格字符匹配。
\ s匹配任何非空字符。至關於[^f n r t v]。
\ t與標籤匹配。至關於X09和CI。
\ v匹配垂直表格字符。它的毒性至關於0b和ck。
附帶條件
全部特殊字符都是具備特殊含義的字符,如上面提到的*in runoo*b。一個簡單的解釋就是表達任何字符串的含義。若是要在字符串中查找*符號,則須要先添加一個:runo ob來轉換*的定義,而後再將其與runo*ob匹配。
若是要配置這些特殊字符,必須首先使用字符「轉換定義」,即將反斜槓字符\放在它們前面。下表列出了正確表達式中的特殊字符:
特殊字符描述
$匹配輸入字符串的結尾。若是設置了regexp對象的多行屬性,則$還與「n」或「r」匹配。
()標記子表達式的開始和結束。能夠得到子表達式供之後使用。要配置這些字符,請使用(和)。
*將前一個子表達式匹配一次或屢次。要匹配*字符,請使用*。
+配置上一個子表達式一次或屢次。要配置+個字符,請使用+。
請使用。
[標記帶括號表達式的開頭。要匹配[,請使用[。
?將前面的子表達式匹配一次或一次,或者指定一個不匹配的限定符。你想要嗎?字符,請使用?.
\將下一個字符標記爲特殊字符、文字字符、向後引用或八進制轉換器。例如,「n」匹配字符「n」。「n」匹配替換行字符。序列「匹配」和「(匹配」)。
^配置輸入字符串的起始位置,除非在方括號表達式中使用,這意味着不接受字符集。要配置^字符自己,請使用^。
標記限制表達式的開頭。匹配,使用。
|指定兩個項目之間的選項。要匹配,請使用它。
附帶條件
指定正確表達式的給定組件必須至少出現一次以知足匹配。是否有*或+或?或N或N,或N,M,共6種。
正確表達式的限定符爲:
大赦
*匹配前的子表達式被使用一次或屢次。例如,zo*能夠匹配「z」和「zoo」。*至關於0,。
+將前一個子表達式匹配一次或屢次。例如,「zo+」能夠匹配「zo」和「zoo」,但不能匹配「z」。+等於1。
?與前面的子表達式匹配一次或一次。例如,「是嗎?」它能夠與「do」中的「do」、「do」中的「do」、「doxy」中的「do」匹配。至關於0,1。
_ n是非負整數。MA正則表達式