1.regex是區分字母大小寫的,但是絕大多數正則表達式也實現子不區分字母大小寫的操作;
2.regex匹配的不是整個字符串,只是與某個模式相匹配的字符,即使他們只是整個字符串的一部分;
3. .字符可匹配任何單個的字符/字母數字甚至是.自身;同一個正則裏可以使用多個.字符,既可以連續出現,可以間隔出現;
4. \轉義字符 \.表示匹配.字符;\\表示匹配\字符;
5.[ns]表示在相應的位置匹配n或者s;
6.-表示字符區間;如[A-Z]表示匹配A到Z的所有大寫字母;[a-z]表示匹配a到z的所有小寫字母;[0-9]
表示匹配0到9的所有數字;注意避免尾字符小於首字符的情況(如[3-1]),這種模式沒有意義;
7.-字符只在[]中有意義,其它地方只能匹配它本身;
8.[A-Za-z0-9]表示匹配所有的字母與數字;
9.#[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]:匹配十六進制顏色值(RGB);
10.^取非匹配.^的效果作用於給定字符集裏的所有字符或字符區間,而不是該字符後面的那一個字符或字符區間;
11.元字符包括. [ ] \ * ? { }
12.空白元字符:\f:換頁;\n:換行;\r:回車;\t:製表符;\v:垂直製表符;
13.\r\n:匹配文本行的結束標籤(windows);
\n\n:匹配文本行的結束標籤(linux/unix);
\r\n\r\n:匹配空白行;
14.類元字符:\d:匹配任何一個數字字符,等價於[0-9];
\D:匹配一個非數字字符(等價於[^0-9]);
\w:匹配任何一個字母(包含大小寫)/數字/下劃線(等價於[a-zA-Z0-9_]);
\W:匹配任何一個非字母/數字/下劃線字符(等價於[^a-zA-Z0-9]);
\s:匹配任何一個空白字符(不包含匹配退格字符的[\b]),等價於[\f\n\r\t\v];
\S:匹配任何一個非空白字符,等價於[^\f\n\r\t\v];
15.[\w.]+:匹配字符集合(字母/數字/下劃線和.)的一次或多次出現.字符集合裏的元字符不需要被轉義;
16.*:"在我前面的字符或字符集合是可選的有沒有都可以"
17.?:只能匹配個字符或字符集合的零次或一次出現,最多不超過一次;
18.匹配URL地址的:https?://[\w./];
19.{}:設定匹配次數的值;如rgb的匹配可以寫爲#[
0-9a-fA-F]{6};{2,4}:表示最少重複2次,最多重複4次,重複次數可以爲0;?等價於{0,1};{3,}表示重複3次或更多;
20.貪婪型元字符:* + {n,}
懶惰型元字符:貪婪型元字符後加上?即可;
21.邊界限定符:使用一些特殊的元字符來表明我們想讓匹配操作在什麼位置發生;
22.\b:匹配一個單詞的開始或結尾(
其實\b匹配的位置是:這個位置位於一個能夠用來構成單詞的字符和一個不能用來構成單詞的字符之間);如\bcat\b:匹配單詞cat;
23.\B-\B:匹配一個前後都不是單詞邊界的連字符
24.用來定義字符串邊界的元字符有兩個:^用來定義字符串開頭;$用來定義字符串結尾;
25.^只有與[連用時,且必須在[的右邊纔有"求非"的作用;
26.^\s*:匹配一個字符串的開頭位置和隨後的零個或多個空白字符.
27.\s*$:匹配珍上字符串結尾處的零個或多個空白字符;
28:(?m):啓用分行模式,把換行符視爲一個字符串分隔符;如:(?m)^\s*//.*$:匹配每一行中//開頭的字符;
29.子表達式需用()包起來,作爲組捕獲;
30.\1:回溯引用第1個子表達式的內容.如[ ]+(\w+)[ ]+\1:回滾的是子表達式(\w+)的內容;\0可以用來代表整個正則表達式;
31..+(:):查找到並且匹配結果包含:;
.+(?=:)查找到但匹配結果不包含:
32.任何一個子表達式都可以轉換爲一個向前查找表達式,只要給它加一個?=前綴即可.?=被稱爲向前查找字符(查找出現在被匹配文本之後的字符,但不消費那個字符);
33.?<= 向後查找字符,查找被匹配文本之前的字符,但不消費那個字符.
34.向前查找模式的長主是可變的,它們可以包含.和+之類的元字符,所以非常靈活.向後查找模式只能是固定長度.
35.負向前查找與負向後查找需要用!代替=.
(?=)--正向前查找;(?!)--負向前查找;(?<=)--正向後查找;(?<!)--負向後查找
====================================================