Regular ['regj?l?] adj. 定期的;有規律的
Expression [?k'spre?(?)n; ek-] n. 表現,表示
Regular expression 正則表達式
什麼是正則表達式?
用一個描述字符串去驗證另一個字符串是否符合描述字符串的特征。(不嚴謹,可以這麼理解)
思考:比如表達式“12+”,描述的意思是一個1和任意個2組成的字符串,那麼'12'、’122‘、'122'….都符合描述特征
正則表達式用來干嘛?
常用到的幾種方式:
1、驗證字符串是否符合指定要求:比如驗證郵箱格式、密碼個數等等
2、查找符合指定要求的字符串,這個比從父串中查找子串方便太多
3、替換,更強大
思考:正則的用途無非2種,驗證、字符串的處理(查找、替換、刪除之類)
正則表達式的基礎知識
一、單種匹配,匹配一次
1、普通字符:字母、數字、漢字、下劃線、沒有特殊定義的標點
舉例::表達式c,匹配字符串adasc,匹配結果:c,匹配位置:始於4,結束於5
2、轉義字符:有特殊意義的字符,采用前面‘+字母’的方式替換原字符
表達式
匹配特征
回車
換行符
制表符
\
代表本身
^
匹配^本身
$
匹配$本身
.
匹配.本身
舉例:表達式$d,在匹配字符串sas$d132,匹配結果:$d,匹配位置:始於3,結束於5
二、多種匹配,匹配一次
1、固定的多種匹配(匹配一次)
表達式
匹配特征
d
0~9的任意一個
w
A-Z,a-z,0-9,_ 中的任意一個
s
空格、制表符、換頁符的任意一個
.
匹配除了 外的任意一個
舉例:表達式a.d,匹配123ab11d,匹配結果:ab1,匹配位置:始於3,結束於6
2、自定義的多種匹配(匹配一次)
使用方括號[],意思是匹配方括號裡面的任意一個字符,[^]那就是匹配方括號裡面字符以外的任意一個字符
表達式
匹配特征
[abc1]
a、b、c、1中的任意一個字符
[^abc]
除了a、b、c以外的任意一個字符
[a-f]
a到f之間任意一個字符
[^a-f]
除了a到f之間以外的任意一個字符
舉例:表達式[^123][456],匹配12345678,匹配的結果45,匹配位置:始於3,結束於5
思考:理解[]代表其中任意一個字符,^代表字符以外的任意字符即可
三、多種匹配,匹配多次
如果想要實現多次匹配,那麼就要告訴描述的表達式你想要匹配幾次,這個東西就是次數修飾,有一點需要注意的是次數修飾放到被修飾的表達式後面
表達式
匹配特征
{n}
匹配n次
{m,n}
匹配m~n之間的次數
{m,}
匹配 >=m 次
?
匹配 0~1中間的次數
*
匹配 >=0次
+
匹配 >=1 次
舉例:表達式d?[ab]*,匹配abc123,匹配結果:ab匹配始於0,結束於2
思考:次數修飾符放到表達式後面用以表示重復的次數即可
四、特殊匹配
表達式
意義
^
與字符串開始的地方匹配
$
與字符串結束的地方匹配
匹配一個單詞的邊界,也就是單詞和空格之間的位置(不匹配任何字符,一邊是w,一邊是非w)
|
前後2個表達式是或的關系
()
1、在被修飾匹配次數的時候,括號代表一個整體
2、去匹配結果的時候,括號內的匹配內容可以被單獨取到
舉例1:表達式start,匹配go,start,end,匹配結果是start
舉例2:表達式(go)+,匹配let's gogo,匹配結果是go go
舉例3:表達式$(d+.d*),匹配$12.33,匹配結果$12.33。單獨獲取括號裡面的內容:12.33