正則表達式用法 http://www.java3z.com/cwbwebhome/article/article8/Regex/Java.Regex.Tutorial.htmlhtml
正則表達式語法 http://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspxjava
正則表達式在線測試工具 http://www.ostools.net/regexweb
從概念上來講,正則表達式也是一門小巧而精煉的語言,它能夠用來簡化檢索特定的字符串,替換特定字符等功能,有許多開發語言工具,都內嵌支持正則表達式。那麼一個正則表達式,到底是什麼?其實它就是一個字符串,但這個字符串具備特定含義。正則表達式
所謂字面值,就是沒有任何轉義,查找的對象就是其自己,好比正則表達式 abc
,查找的結果就是返回要查找字符串中 a, b, c三個字母連在一塊兒的字符串。又如,123 就是查找到 123 這個子串。工具
.
在正則表達式中表示匹配任意字符,很類似於通配符*
。若是咱們查找a.b這個正則表達式,咱們能夠找到全部開頭和結尾爲a,b,中間是任意字符的字符串,好比abc,adc,a2c等。測試
若是你在一個正則表達式中看到有一些字符被[]括號括起來,那麼他們的含義將再也不是簡單的字面值,他們表示某一個被括號中屬性約束的字符。好比[123456],這個正則表達式表示找到1-6中的任意一個字符,又好比a[bd]c,這表示查找abc或者adc。spa
注意:.net
在字符類中字符的順序和重複性都不是咱們關心的。[123]和[2233111],含義是如出一轍的。code
句號在字符類中表示的就是其自己,[.]
就是查找一個句號。orm
若是咱們須要查找一個數字,[0123456789],這樣作是能夠達到目的的,但這寫起很是麻煩,並不符合正則表達式小巧的特性,這時咱們可使用區間符號來簡化,[0-9]
和上面的式子意義徹底同樣。一樣,咱們能夠[a-zA-Z]
,表示任意一個字母。
注意:
區間的範圍應該有意義,[a-1]這樣的區間並沒有任何意義,儘管它在語法上可能沒有錯誤;
區間左右兩端對應的是字符,並非數字,好比[2-41],這個式子的含義是找到2-4的一個數字或者1,和[1-4]是同樣的。
^
在正則表達式中表示取反,這個很好理解,[^a]
,表示找到除了a以外的任意字符。[^0-9],表示找到一個非數字的字符。
注意:
^必須在中括號內,及字符類屬性中使用。
^是將後面的總體做爲取反條件的。
某些符號具備和字符類相同的含義:
\d和[0-9]相同
\w和[0-9A-Za-z_]相同 表示
數字,字母或者下劃線**\s
表示匹配空格,tab**和換行等不可見符。
與此相對的\D,\W,\S,則表示上述條件的取反狀況。
乘法集的最大用處也是簡化正則表達式,用大括號表示。好比,a{2},表示找到 aa 這個字符串。
注意:
乘法集是已前面總體爲乘法條件的,好比 [ab]{2},不是簡單的比配aa,bb,而是和[ab][ab]含義是相同的,會匹配ab,ba,aa,bb。
乘法集和字符類相同,也能夠用區間進行簡化,可是符號不相同。a{1,3},表示找到a,aa,aaa這三個字符串。a{0,1}是合法的,表示找到空字符,或者a。
注意:
乘法集的"越長越好"屬性:乘法集具備這樣的特色,好比a{2,4},若是我搜索myaaaa,它不會找到aa後就中止,而是會找到aaaa。
乘法集的"所有獲取"屬性:好比 a{2.4},若是搜索 myaayouaaaa,它會找到 aa 和 aaaa。
乘法集支持開區間,a{1,} 是合法的,表示找到任何 a 相連的字符串。
這個符號的含義和 {0,1} 徹底相同,123?4,表示匹配 1234 或者 124 ;
這個符號的含義和 {0,} 相同,好比.*
表示通配一切字符串。
這個符號和{1,}相同。
|
符號表示或的關係,好比 abc|edf,表示找到 abc 或者 def ;
小括號在正則表達式中表示組合,好比(a|b|c)d,表示找到ad, bd, cd,能夠將小括號的做用理解爲優先級。
\b
表示單詞的邊界,好比 \b[a-z]{3}\b ,表示匹配一個三個字母的小寫單詞。
單單的一個^
符號表示的是行的開頭,$
表示行的結束。
注意:
[^]是非法的,[$]表示匹配一個$符號。
上面說了這麼多正則表達式的語法規則,咱們如今來作下總結:
字面值:直接查找的字符,好比123, avb。
字符類:描述字符的一些屬性,好比[123], [a-z], \d, \w, \s, . 。
乘法集:簡化表達式,好比 {0,3}, ?, +, *。
或和組合:好比(a|b|v)。
單詞,行的邊界\b ^ $
. \ [ ] { } ? * + | ( ) ^ $
三、字符類中元字符列表
[ ] \ - ^
最後,還有一個特別特別重要的字符咱們沒考慮到,若是咱們要查找元字符怎麼辦,在正則表達式中還有一個轉義字符」",若是咱們要查找. 只要查找 \.
同理\[\]
是查找」[]「這個字符串。若是要查找」",再加一個轉義字符就好:\\
。