半小時瞭解正則表達式

-------------------------------------------------------------------------正則表達式

^  和  $  分別用來匹配字符串的開始和結束   ide

-------------------------------------------------------------------------編碼

例1  ^<b>  開頭 必定要有"<b>"字符串; spa

例2  </b>$ 結尾 必定要有"</b>" 的字符串; ip

例3  ^abc$ 以abc開頭和以abc結尾的字符串,其實是隻有abc匹配 字符串

例4   abc  沒符號就 匹配包含abc的字符串it

-------------------------------------------------------------------------class

*    +    和  ?   用來表示一個字符能夠出現的次數或者順序. 他們分別表示騰訊

-------------------------------------------------------------------------im

{0,} = *  例1   ab{0,}  匹配以a開頭後面B出現O-N次( "a", "ab", "abb", 

"abbbbbbbbbbbbbbbbb", 無限...) 

{1,} = +  例2   ab{1,}  匹配以a開頭後面B出現1-N次( "ab", "abb", 

"abbbbbbbbbbbbbbbbb", 無限...)

{0,1}= ?  例3   ab{0,1} 匹配以a開頭後面B出現O-1次( "a", "ab")

          例4   a{0,1}b+$ 匹配以0個或者1個a  再加上一個b結尾的字符串. ( 

"b", "ab")

注(2種寫法)

ab{0,}也能夠寫成  ab*

ab{1,}也能夠寫成   ab+

ab{0,1}也能夠寫成   ab?

a{0,1}b+$也能夠寫成  a?b+$

(1)1要點, '*' '+',和 '?'只管控制它前面那個字符出現次數.  

     2 {N,N}  幾到幾回   {0} O次   

     3{}這個內不能爲負數

(2)次數是能夠修改的

例5   ab{2}   要求a後面必定要跟兩個b(一個也不能少)如 ("abb"); 

例6   ab{2,}  要求a後面必定要有兩個或者兩個以上b   如("abb", "abbbb", 等.); 

例7   ab{3,5} 要求a後面能夠有2-5個b("abbb", "abbbb", or "abbbbb"). 

(3)後面跟多個字符用()

例8   a(bc)*  匹配 a 後面跟0個或者一個"bc";  固然你也能夠寫成"a(bc){0,}"

例9   a(bc){1,5}  匹配1個到5個 "bc."  

-------------------------------------------------------------------------

│       至關於OR   用來表示 1個或者  多個或者

-------------------------------------------------------------------------

例1    A│B    匹配含有"A" 或者 "B" 的 字符串; 

例2   (A│B)C  匹配含有 "AC" 或者 "BC"的字符串; 

例3   (A│B)*C 匹配含有(包括0-1個)a或b,後面跟一個c 

-------------------------------------------------------------------------

.     能夠表明全部的單一字符

-------------------------------------------------------------------------

 . 不包括"\n"空格 若是有空格就用   但空格加一字符[\n.]  多個空格+1字符 [\n


\n\n\n\n\n.]


例1   a.[0-9] 一個a   加一個字符  再加一個0到9的數字 

例2   ^.{3}$  三個任意字符結尾 

-------------------------------------------------------------------------

'[ab]' 中括號括住的內容只匹配一個單一的字符 

-------------------------------------------------------------------------

例1   [ab]          匹配單個的 a 或者 b ( 和 "a│b" 同樣); 

例2   [a-d]         匹配'a' 到'd'的單個字符 (和"a│b│c│d" 還有 "[abcd]"

效果同樣); 通常咱們都用[a-zA-Z]來指定字符爲一個大小寫英文

例3   ^[a-zA-Z]     匹配以大小寫字母開頭的字符串 

例4   [0-9]%        匹配含有 形如 x% 的字符串 

例5   ,[a-zA-Z0-9]$ 匹配以逗號再加一個數字或字母結尾的字符串

例6   %[^a-zA-Z]%   匹配含有兩個百分號裏面有一個(非)字母的字符串. 

你也能夠把你不想要得字符列在中括號裏,你只須要在總括號裏面使用'^' 

要點1:^[內容]  ^在[]外開頭,就表示之內容開頭

要點2:[^內容] ^在[]裏開頭,就表示排除裏面的內容(^非的意思)

要點3: 匹配含有這些字符的字符串. 在中括號裏[*\+?{}.] 或者' 符號將失效  括號

只匹配單一字符

要點4: []中含有']' 最好把它做爲列表裏的第一個字符(可能跟在'^'後面)

要點5: []中含有有'-' 最好把它放在最前面或者最後面, or 或者一個範圍的第二個結

束點[a-d-0-9]中間的'-'將有效.

-------------------------------------------------------------------------

\b  和  \B      1匹配一個單詞右邊界   2匹配非單詞邊界

-------------------------------------------------------------------------

例1  've\b': 能夠匹配love裏的ve而不匹配very裏有ve

例2  'ov\B': 能夠匹配love裏的ov而不匹配ovry裏有ov

-------------------------------------------------------------------------

\d  和  \D     

-------------------------------------------------------------------------

例1   \d  匹配一個數字字符。等價於 [0-9]。 

例2   \D  匹配一個非數字字符。等價於 [^0-9]。 

-------------------------------------------------------------------------

\w  和  \W     

-------------------------------------------------------------------------

例1  \w  匹配包括下劃線的任何單詞字符。等價於'[A-Za-z0-9_]' 

例2  \W  匹配包括下劃線的任何非單詞字符。等價於 '[^A-Za-z0-9_]'。 

-------------------------------------------------------------------------

 匹配非打印字符 

-------------------------------------------------------------------------

字符  含義 

\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。 

-------------------------------------------------------------------------

例子     

-------------------------------------------------------------------------

匹配首尾空白字符的正則表達式:^s*|s*$

匹配Email地址的正則表達式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*

匹配網址URL的正則表達式:[a-zA-z]+://[^s]*

匹配賬號是否合法(字母開頭,容許5-16字節,容許字母數字下劃線):^[a-zA-Z][a-

zA-Z0-9_]{4,15}$

匹配國內電話號碼:d{3}-d{8}|d{4}-d{7}  匹配形式如 0511-4405222 或 021-

87888822 920-209 642-964

匹配騰訊qq號:[1-9][0-9]{4,}  1+後面四爲的數字開始,也就是 10000

匹配中國郵政編碼:[1-9]d{5}(?!d) 中國郵政編碼爲6位數字

匹配***:d{15}|d{18}評註:中國的***爲15位或18位

匹配ip地址:d+.d+.d+.d+  評註:提取ip地址時有用

-------------------------------------------

^ $    //開始到結尾 

+      //連續1-N個 (連在一塊兒的)(也就是-{1,} )

-?     //表示負和非負  (也就是-{0,1} )

[0-9]* //表示前面的位數0-N(也就是[0-9]{0,} )

.?     //表示有點或者無點

[^     //非裏面的內容

[a-z] //匹配全部的小寫字母 

[A-Z] //匹配全部的大寫字母 

[a-zA-Z] //匹配全部的字母 

[0-9] //匹配全部的數字 0-9的整數

[0-9.-] //匹配全部的數字,句號和減號 

------------------------------------------------

^[a-zA-Z0-9_]+$    //全部包含一個以上的字母、數字或下劃線的字符串   //舉例

子連在一塊兒 aA0_A001a_ 

^[0-9]+$           //全部的正數   (也能夠說是非負整數)   //舉例子  

345500687008099900999

^-?[0-9]+$         //全部的整數   (包括 負整數和整數)  //舉例子  -43443 

或者 43443  

^-?[0-9]*.?[0-9]*$ //全部的小數  (包括正 副小數 小數點先後的位數無限長) //

舉例子 -10.00  或者100000.0000

若是沒小數點  後面確定沒數字, 因此前面加一個.? 來判斷是否有小數點,按道理說

能夠不須要.?是多餘的

由於這個是專門判斷小數的,若是沒小數點了,還叫付數嗎       

[^a-z] //除了小寫字母之外的全部字符 

[^/^] //除了"/"和"^"字符以外的全部字符 

[^"'] //除了雙引號(")和單引號(')以外的全部字符 

相關文章
相關標籤/搜索