正則表達式語法學習和在線練習
背景說明
- 正則表達式使搜索和替換操作更加靈活高效。
- 許多程序設(shè)計語言都支持使用正則表達式進行字符串操作。
- 正則表達式是由普通字符和特殊字符組成的文字模式。
- 正則表達式的組件可以是單個的字符、字符集合、字符范圍、字符間的選擇或者所有這些組件的任意組合。
- 正則表達式描述了一種字符串匹配的模式,可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。
語法說明
普通字符
-
普通字符包括沒有顯式指定為元字符的所有可打印和不可打印字符。這包括所有大寫和小寫字母、所有數(shù)字、所有標點符號和一些其他符號。
字符 描述 [ABC]匹配字符集合中的任意一個字符 [^ABC]匹配字符集合中未包含的任意字符 [A-Z]匹配指定范圍內(nèi)的任意字符 [^A-Z]匹配任何不在指定范圍內(nèi)的任意字符
非打印字符
-
非打印字符也可以是正則表達式的組成部分。
字符 描述 \cx匹配由 x 指明的控制字符。x 的值必須為 A-Z或a-z之一\f匹配一個換頁符。等價于 \x0c和\cL\n匹配一個換行符。等價于 \x0a和\cJ\r匹配一個回車符。等價于 \x0d和\cM\t匹配一個制表符。等價于 \x09和\cI\v匹配一個垂直制表符。等價于 \x0b和\cK\s匹配任何空白字符,包括空格、制表符、換頁符等 \S匹配任何非空白字符 \w匹配字母、數(shù)字、下劃線、漢字 \W匹配非字母、數(shù)字、下劃線、漢字 \d匹配一個數(shù)字字符。等價于 [0-9]\D匹配一個非數(shù)字字符。等價于 [0-9]
特殊字符
-
匹配特殊字符時必須進行轉(zhuǎn)義,即放置反斜杠字
\在特殊字符前面。特別字符 描述 \將下一個字符標記為一個特殊字符 .匹配除換行符( \n、\r)之外的任何單個字符| 匹配二者之一
限定符
-
限定符用來指定正則表達式的一個給定組件的出現(xiàn)次數(shù)。
字符 描述 *匹配前面的子表達式零次或多次。等價于 {0,}+匹配前面的子表達式一次或多次。等價于 {1,}?匹配前面的子表達式零次或一次。等價于 {0,1}{n}n是一個非負整數(shù)。匹配確定的 n 次{n,}n是一個非負整數(shù)。至少匹配 n 次{n,m}m和n均為非負整數(shù),其中 n <= m 。最少匹配 n 次且最多匹配 m 次
捕獲元
-
捕獲分組的捕獲匹配結(jié)果可以通過
$n(表示第 n 個捕獲組的內(nèi)容)查看。字符 描述 (exp)匹配 exp并捕獲這一匹配(?:exp)匹配 exp但不捕獲匹配結(jié)果。也就是說這是一個非捕獲匹配exp1(?=exp2)正向肯定預查。用于查找 exp2前面的exp1exp1(?!exp2)正向否定預查。用于查找后面不是 exp2的exp1(?<=exp2)exp1反向肯定預查,與正向肯定預查類似,只是方向相反。用于查找 exp2后面的exp1(?<!exp2)exp1反向否定預查,與正向否定預查類似,只是方向相反。用于查找前面不是 exp2的exp1
定位符
-
定位符將正則表達式固定到行首或行尾,不能與限定符一起使用。
字符 描述 ^匹配輸入字符串開始的位置 $匹配輸入字符串結(jié)尾的位置 \b匹配一個單詞邊界,即單詞和空格間的位置 \B匹配非單詞邊界
修飾符
-
用于指定額外的匹配策略。位于表達式之外
修飾符 含義 描述 iignore將匹配設(shè)置為不區(qū)分大小寫 gglobal全局匹配,查找所有的匹配項。 mmultiline多行匹配,使邊界字符 ^和$匹配每一行的開頭和結(jié)尾s特殊字符圓點 .中包含換行符\n默認情況下的圓點 .是匹配除換行符\n之外的任何字符,加上s修飾符之后,.中包含換行符\n。
運算符優(yōu)先級
-
相同優(yōu)先級的從左到右進行運算,不同優(yōu)先級的運算先高后低。
運算符 描述 \轉(zhuǎn)義符 (), (?:), (?=), []圓括號和方括號 *, +, ?, {n}, {n,}, {n,m}限定符 ^, $, \任何元字符、任何字符 定位點和序列 | "或"操作字符具有高于替換運算符的優(yōu)先級
在線練習
注意事項
- 限定符
*和+都是貪婪匹配,會匹配盡可能多的字符。 - 在限定符的后面加上一個
?可以實現(xiàn)懶惰匹配,匹配盡可能少的字符。
參考資料
版權(quán)聲明:本文為「夢幻之心星」原創(chuàng),依據(jù) CC BY-NC-SA 4.0 許可證進行授權(quán),轉(zhuǎn)載請附上原文出處鏈接及本聲明。
博客園地址:http://www.rzrgm.cn/Sky-seeker
微信公眾號:關(guān)注微信公眾號,獲取即時推送
![]()

浙公網(wǎng)安備 33010602011771號