正則表達式基礎知識01

使用元字符

匹配數字:

\d

[0-9]

\D

[^0-9]

匹配字母數字

\w

[0-9a-zA-Z_] 注意:包括下劃線

\W

[^0-9a-zA-Z_]

匹配空白字符

\s

任何空白字符[\f\n\r\t\v]

\S

任何非空白字符[^\f\n\r\v]

[\b]

匹配退格符是一個特例

匹配十六進制是使用\x前綴加數字  \x0A 匹配\n

八進制使用\0前綴加數字

 

例子:

Ø  匹配郵箱:[\w\.]+@[\w\.]+\.\w+    但不是最好的,不完整

Ø  郵箱第一字母必須是字母或下劃線,因此符合要求的的模式是:

                 \w*[\w.]+@[\w.]+\.\w+

Note:當在[]中使用.、+、*等元字符時會自動將其解釋爲普通字符,因此[\w.]和[\w\.]是一樣的。

重複匹配

匹配一個或多個 +

匹配零個或多個 *

匹配零個或一個 ?

匹配重複次數  {n}、{n,m}、{n,}至少n次、{ ,m}最多m次【包含n,m】

例子:

Ø  匹配一個網頁地址: https?://[\w./]+或http[s]?://[\w./]+

Ø  匹配空行(在windows中空格是\n\r,在Linux/Unix中空格是\n),單獨匹配各自系統中的空行是:Windows—‘\r\n \r\n’ Linux/Unix—‘\n\n’;因此使用一個模式可以表示爲: [\r]?\n[\r]?\n

Ø  檢查日期格式是否正確(對日期值的檢查應該在此之前確定):

\d{1,2}[-\/]\d{1,2}[-\/]\d{2,4}

防止過度匹配:+、*都是貪婪性,會按照最多的去匹配;要使用懶惰型版本的元字符只需要給貪婪型元字符加上?後綴即可。

+?、*?、{n,}?是各自貪婪型元字符對應的懶惰型元字符版本

Ø  將HTML中的<B></B>標籤中的內容匹配出來

<B>AK</B> and <B>HI</B>

模式1:[<B/>].*[</B>]   過度匹配

模式2:[<B/>].*?[</B>]

位置匹配

元字符

含義

\bword\b

匹配單詞邊界,匹配單詞長度爲4,僅僅匹配單詞word本身

 his cap and cape from capsized

例子:

\bcap\b  將匹配cap

\bcap 將匹配以cap開頭的任意單詞

cap\b 匹配以cap結尾的任意單詞

\B\B

不匹配單詞邊界,

 colors and – coded pass-key

例子:

\B-\B將匹配一個前後都不是單詞邊界的連字符 pass-key

字符串的開頭:^

字符串的結尾:$

 

分行匹配模式:?m (multiline mode)

使用行分隔符後,^除了匹配字符串的開頭外,還能夠匹配行分隔符(換行符)後面的開始位置,同樣$還能夠匹配行分隔符後面的結束位置。(?m)必須出現在整個模式的前面

例子:

判斷某一文件是不是xml文件:

    ^\s<\?xml .*\?>

</html>標籤後面不應該有其他內容了,進行合法檢查:

</[Hh][Tt][Mm][Ll]>\s*$

匹配JavaScript中的所有註釋:

   (?m)^\s*//.*$

使用子表達式

    元字符和字符是正則表達式的基本構件。子表達式是尅嵌套的,

例子

Ø  在html中使用&nbsp(None-breaking space)表示非換行型空格,需要匹配一個或多個&nbsp;但是使用模式’&nbsp;{2,}’是不對的,需要對整體進行匹配因此使用括號“()”將其括起來做一個獨立的元素使用,該模式就是子表達式,通常使用小括號括起來。(&nbsp;){2,}

Ø  匹配IP地址格式:

模式1:\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}

模式2:(\d{1,3}.){3}\d{1,3}

Ø  把用戶記錄中的年份數字打印出來

日誌格式:

ID:042

SEX:M

DOB:1996-08-17

Status:Active

匹配模式:(19|20)\d{2}

Ø  使用子表達式的嵌套,匹配IP地址格式且匹配合法的IP第地址,在構造正則表達式一定要清楚相匹配什麼,不像匹配什麼:

匹配IP地址:任何一個1位或2位數字、任何一個以1開頭的3位數字、任何一個以2開頭、第二位數字在0~4的3位數字、任何一個以25開頭,第3位數字在0~5之間的3爲數字

模式:(((\d{1,2})|{1\d{2})|(2[0-4]\d)(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4)|(25[0-5]))

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章