找了不少正則表達式的教程,始終沒有滿意的,要不就是直接給出一張元字符的表,要不就是給出各類經常使用的表達式,直到我看到這篇http://deerchao.net/tutorials/regex/regex.htm
這篇教程簡單明瞭的寫了正則表達式的做用及怎樣使用,下面是我看完的我的理解:正則表達式
理解了正則表達式的做用才能更好的掌握它,正則表達式的做用就是爲了匹配字符串:
因此正則裏的語法都是爲了方便地匹配字符串而生的.net
下面是正則裏最基本的幾個匹配符:code
. 匹配除換行符之外的任意字符 \w 匹配字母或數字或下劃線或漢字 \s 匹配任意的空白符 \d 匹配數字 \b 匹配單詞的開始或結束 ^ 匹配字符串的開始 $ 匹配字符串的結束
有時咱們須要自定義匹配的範圍htm
[aeiou] [a-z0-9A-Z_]
只要知足括號裏的任意字符即知足匹配。教程
有時咱們須要取反:字符串
\W 匹配任意不是字母,數字,下劃線,漢字的字符 \S 匹配任意不是空白符的字符 \D 匹配任意非數字的字符 \B 匹配不是單詞開頭或結束的位置 [^x] 匹配除了x之外的任意字符 [^aeiou] 匹配除了aeiou這幾個字母之外的任意字符
這些只能匹配單個的字符,有時咱們要匹配多個重複的:get
? 重複零次或一次 {n} 重複n次 {n,} 重複n次或更屢次 {n,m} 重複n到m次 * 重複零次或屢次 + 重複一次或屢次
分枝指的是有幾種規則,若是知足其中任意一種規則都應該當成匹配,具體方法是用|把不一樣的規則分隔開。io
如:
0d{2}-d{8}|0d{3}-d{7}這個表達式能匹配兩種以連字號分隔的電話號碼:一種是三位區號,8位本地號(如010-12345678),一種是4位區號,7位本地號(0376-2233445)。語法
分組指的是能夠用小括號把一條表達式括起來當成一個子表達式來用,而後你就能夠指定這個子表達式的重複次數了。方法
如:
(d{1,3}.){3}d{1,3}是一個簡單的IP地址匹配表達式。要理解這個表達式,請按下列順序分析它:d{1,3}匹配1到3位的數字,(d{1,3}.){3}匹配三位數字加上一個英文句號(這個總體也就是這個分組)重複3次,最後再加上一個一到三位的數字(d{1,3})。
有時咱們要匹配的字符串可能包含正則表達式語法提供的一些元字符,這時咱們就要用到字符轉義:
例如:deerchao.net匹配deerchao.net,C:\Windows匹配C:Windows。