定義
正規表示式(regular expression,簡稱regex),是一種處理文字的工具,並不算得上是一門「語言」,可以理解為內嵌於其它語言中的「迷你語言」。
用途搜尋,替換
語法 正規表示式區分大小寫;
由字元和具有特殊含義的元字元構成;
對於大部分的元字元,當要使用它們本身時,一般需要使用反斜線 \ 進行轉義,\ 本身也是乙個元字元,要搜尋 \ 本身時,使用 \\ 轉義序列;
當有多個匹配結果的時候,正規表示式的引擎預設只返回第乙個結果。但是大部分實現了正規表示式的程式語言都提供了返回多個結果的方法。
匹配純文字
正規表示式中的每乙個普通字元(非元字元)都匹配這個字元本身。
匹配任意字元
使用英文句點符號.匹配除了換行符以外的任意乙個字元。
要匹配句點.本身時,必須使用反斜線 \. 進行轉義。
匹配多個字元中的乙個
使用 表示乙個字元集合,其中可以包含任意多個任意字元。
要匹配 [ 或 ] 本身時,必須使用 \ 進行轉義
例如,[abc123] 這個正規表示式,匹配 「abc123」 中任意乙個字元。
使用字元集合區間
在 使用中使用連字元 - 來定義字元區間。
字元區間的首、尾字元可以是ascii字元表裡的任意乙個字元。
字元集合中可以包含多個使用連字元 - 連線的字元區間。
連字元是乙個特殊的元字元,只有在字元集合 中具有特殊含義,在該區域以外只是乙個普通字元,不需要進行轉義。
常用了字元區間如下:
元字元含義
[a-z]
匹配從a到z中的任意乙個大寫字母
[a-z]
匹配從a到z中的任意乙個小寫字母
[0-9]
匹配數字0到9之間的任意乙個數字
取非匹配
在字元集合中,元字元[的右邊第乙個位置,使用^元字元,表示取非操作。
^作用於該字元集合中的所有字元或字元區間。
例如:
[^abc] ,匹配除了 「a」 「b」 「c」 以外的任意乙個字元。
大部分的元字元,在搜尋其本身時,需要使用 \ 進行轉義。
匹配空白字元
元字元含義
\b退格鍵,回退乙個字元
\f換頁符
\r回車符
\n換行符
\t製表符
\v垂直製表符
\s空白字元,等價於 [\f\r\n\t\v]
\s非空白字元,等價於 [^\f\r\n\t\v]
注意:對於換行符,在windows作業系統中使用 \r\n ,而在unix/linux作業系統中,使用 \n\n
匹配數字
元字元含義
\d任意乙個數字字元,等價於[0-9]
\d任意乙個非數字字元,等價於[^0-9]
匹配字母數字下劃線
元字元含義
\w任意乙個字母、數字或下劃線字元,等價於[a-za-z0-9_]
\w任意乙個非字母、數字或下劃線字元,等價於[^a-za-z0-9_]
使用重複匹配元字元,重複匹配字元或字元集合。
重複次數元字元
元字元含義
?匹配字元或字元集合0次或1次,即有或沒有
+匹配字元或字元集合1次或多次,即至少有一次
*匹配字元或字符集和0次或多次,即任意次數
匹配字元或字元集合至少 n 次,至多 m 次
匹配字元或字元集合至少 n 次,上不封頂
匹配字元或字元集合剛好 n 次
防止過度匹配
貪婪型元字元:盡可能的從一段文字的開頭匹配到結尾,而不是匹配到遇到的第乙個匹配就結束;
懶惰型元字元:與貪婪型元字元的行為相反,只匹配盡可能少的字元。
貪婪型元字元
懶惰型元字元**?
++??
元字元含義
\b單詞邊界,匹配乙個單詞的開始或結尾,只是匹配乙個位置,並不匹配任何字元
\b非單詞邊界,不匹配乙個單詞邊界
^字串邊界,匹配字串的開頭位置
$字串邊界,匹配字串的結尾位置
正規表示式必知必會
1 字元 語法說明 表示式可匹配 任意普通字元 匹配自身 abcabc 轉義字元 a b a b.匹配除了換行符以外的任何字元 相當於 w的加強版 w看下面一張表 可匹配空格 a c1b 字符集 可以都寫出來也可以寫個範圍如 a z 第乙個字元如果是 表示取反,如 a 表示a除外的所有字元,如果字符...
正規表示式必知必會
1.exactly n of the preceding element.只能匹配連續n個字元 n or more of the preceding element.可以匹配n,或任意大於n個連續字元。貪婪匹配,會盡量匹配多的字元 between m and n of the preceding e...
正規表示式必知必會 附
正規表示式測試器 html注釋 基本元字元 匹配任意單個字元 邏輯或操作符 匹配字元集合中的乙個字元 對字元集合求非 在 中定義乙個區間 對下乙個字元轉義 數量元字元 匹配前乙個字元 子表示式 的零次或多次重複 懶惰型版本 匹配前乙個字元 子表示式 的一次或多次重複 懶惰型版本 匹配前乙個字元 子表...