正規表示式(regular expression)描述了一種字串匹配的模式,可以用來檢查乙個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。
列目錄時, dir *.txt或ls *.txt中的*.txt就不是乙個正規表示式,因為這裡*與正則式的*的含義是不同的。
正規表示式是由普通字元(例如字元 a 到 z)以及特殊字元(稱為元字元)組成的文字模式。正規表示式作為乙個模板,將某個字元模式與所搜尋的字串進行匹配。
3.1 普通字元
由所有那些未顯式指定為元字元的列印和非列印字元組成。這包括所有的大寫和小寫字母字元,所有數字,所有標點符號以及一些符號。
3.2 非列印字元
字元 含義
\cx 匹配由x指明的控制字元。例如, \cm 匹配乙個 control-m 或回車符。x 的值必須為 a-z 或 a-z 之一。否則,將 c 視為乙個原義的 'c' 字元。
\f 匹配乙個換頁符。等價於 \x0c 和 \cl。
\n 匹配乙個換行符。等價於 \x0a 和 \cj。
\r 匹配乙個回車符。等價於 \x0d 和 \cm。
\s 匹配任何空白字元,包括空格、製表符、換頁符等等。等價於 [ \f\n\r\t\v]。
\s 匹配任何非空白字元。等價於 [^ \f\n\r\t\v]。
\t 匹配乙個製表符。等價於 \x09 和 \ci。
\v 匹配乙個垂直製表符。等價於 \x0b 和 \ck。
3.3 特殊字元
所謂特殊字元,就是一些有特殊含義的字元,如上面說的"*.txt"中的*,簡單的說就是表示任何字串的意思。如果要查詢檔案名中有*的檔案,則需要對*進行轉義,即在其前加乙個\。ls \*.txt。正規表示式有以下特殊字元。
特別字元 說明
$ 匹配輸入字串的結尾位置。如果設定了 regexp 物件的 multiline 屬性,則 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字元本身,請使用 \$。
( ) 標記乙個子表示式的開始和結束位置。子表示式可以獲取供以後使用。要匹配這些字元,請使用 \( 和 \)。
* 匹配前面的子表示式零次或多次。要匹配 * 字元,請使用 \*。
+ 匹配前面的子表示式一次或多次。要匹配 + 字元,請使用 \+。
. 匹配除換行符 \n之外的任何單字元。要匹配 .,請使用 \。
[ 標記乙個中括號表示式的開始。要匹配 [,請使用 \[。
? 匹配前面的子表示式零次或一次,或指明乙個非貪婪限定符。要匹配 ? 字元,請使用 \?。
\ 將下乙個字元標記為或特殊字元、或原義字元、或向後引用、或八進位制轉義符。例如, 'n' 匹配字元 'n'。'\n' 匹配換行符。序列 '\\' 匹配 "\",而 '\(' 則匹配 "("。
^ 匹配輸入字串的開始位置,除非在方括號表示式中使用,此時它表示不接受該字元集合。要匹配 ^ 字元本身,請使用 \^。
{ 標記限定符表示式的開始。要匹配 {,請使用 \{。
| 指明兩項之間的乙個選擇。要匹配 |,請使用 \|。
【原文】
輕鬆學習正規表示式
英文原文 learn regular expressions regex with ease 謝謝合作!譯文如下 開篇,談談本文的主要內容 編寫驗證規則最流行和最簡單的方法就是正規表示式了,但唯一的乙個問題是正規表示式的語法太隱晦了,讓人蛋疼無比。很多開發者為了在專案中應用複雜的驗證,經常要使用一些...
輕鬆學習正規表示式
也許你是初學者,那以防萬一,我先來講講什麼是正規表示式吧 正規表示式可以幫助我們更好的描述複雜的文字格式。一旦你描述清楚了這些格式,那你就可以利用它們對文字資料進行檢索 替換 提取和修改操作。下面有乙個正規表示式的簡單例子。第一步先要引入有關正則式的命名空間 using system.text.re...
輕鬆學正規表示式
正規表示式廣泛用於查詢 校驗,無論使用什麼語言開發,或者是日常工作中使用編輯器,掌握正規表示式都能帶來效率上的收穫。我在別人的教程中看過一句話 如果你覺得正規表示式很簡單,要麼你是乙個天才,要麼你不是地球人。不要被嚇到,一旦理解正則後,其實也並不會那麼難,而且它給我們帶來的好處是毋庸置疑的。本文盡量...