以下資料仍有一些不太了解或不知道該如何解釋的地方,請見諒。
編號 | 字元 | 描述 |
1 | \ | 特殊字元的前置符號,將下一個字元標記為一個特殊字元。例如,「\n」代表換行符號。「\\」代表「\」而「\(」則代表「(」。 |
2 | ^ | 表示字串必須以後面的字元開頭。ex. ^aa,表示必須以aa開頭。 |
3 | $ | 表示字串必須以後面的字元結尾。ex. aa$,表示必須以aa結尾。 |
4 | * | 表示 * 前面的字元可出現或不出現。例如:Gooo*gle 能匹配 Google、Goooooogle。* 等於 {0,}。 |
5 | + | 表示 + 前面的字元至少要出現一次(可出現多次),ex.go+gle 表示這個字串可以為gogle、google、gooooogle...。+ 等於 {1,} |
6 | ? | 表示 ? 前面的字元最多只可以出現一次(可不出現)。ex.colou?r 表示這個字串可以為color或colour。? 等於 {0,1} |
7 | {n} | 大括號「{}」中包起來的數字n是一個非負整數。代表前面的字元一定要出現n次。例如:o{3} 可以為 Gooogle 的 ooo,但不能匹配 Google。 |
8 | {n,} | 大括號「{}」中包起來的數字n是一個非負整數。代表前面的字元至少要出現n次。ex.go{2,}gle 可以為google、goooogle,但gogle就不合格。 |
9 | {n,m} | 大括號「{}」中包起來的數字n是一個非負整數。代表前面的字元至少要出現n次,最多不可超過m次。n要小於等於m。ex. go{2,4}gle可以為google、goooogle,但gogle、gooooogle就不合格。 |
10 | ? | 當?字元放在次數限制符號(*,+,?,{n},{n,},{n,m})後時,表示要不貪心的尋找,可增加效能。不貪心表示只要找到一個就好,不再找別的。 參考:http://deer.nublog.cc/article.php?i=20080225 |
11 | . | 表示除「\n」之外的任何字元。要表示包括「\n」在內的任何字元,請使用「[.\n]」。 |
12 | (pattern) | 小括號代表中間的pattern為一群組。 |
13 | (?:pattern) | 匹配pattern但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行儲存供以後使用。例如:run(?:n|ning) 能匹配 running 整個字串,並且從此字串後繼續比對。 |
13 | (?=pattern) | 正向預查,在任何匹配pattern的字串開始處匹配尋找字串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如:Office(?=2003|2007|2010) 能匹配 Office2003 中的 Office,但不能匹配 Office2005 中的 Office,而從 Office 字串後繼續比對。 |
14 | (?!pattern) | 負向預查,在任何不匹配pattern的字串開始處匹配尋找字串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如:Office(?!2003|2007|2010) 能匹配 Office2005 中的 Office,但不能匹配 Office2010 中的 Office,而從 Office 字串後繼續比對。 |
15 | x|y | 代表OR,ex. (A|a)pple 表示 這個字串可以為Apple或apple |
16 | [xyz] | 代表可為中括號[]內的任一字元。ex.[abc]表示可為a、b、c任一字元。 |
17 | [^xyz] | 代表不可為中括號[]內的任一字元。ex.[abc]表示不可為a、b、c任一字元。 |
18 | [a-z] | 代表可為中括號[]內的字元區間內的任一字元。ex.[a-z]表示可為a~z間的任一字元。 |
19 | [^a-z] | 代表不可為中括號[]內的字元區間內的任一字元。ex.[a-z]表示不可為a~z間的任一字元。 |
20 | \b | 表示字和空白之間的交會點。ex.於aa bb aabb時,可以用 aa\b 找出 aa,而不會找出aabb、也不會找出「aa (空格)」。 |
21 | \B | 表示非字和空白之間的交會點 |
22 | \cx | 表示一個控制字元。例如,\cM匹配一個Control-M或Enter符。x的值必須為A-Z或a-z之一。否則會將c視為一個單純的「c」字元。 |
23 | \d | 可為任何數字。\d 等於[0-9]。 |
24 | \D | 不可為數字。\D 等於[^0-9]。 |
25 | \f | 換頁符號。\f 等於\x0c和\cL。 |
26 | \n | 換行符號。\n 等於\x0a和\cJ。 |
27 | \r | Enter符號。\r 等於\x0d和\cM。 |
28 | \s | 代表任何空白字元,包括空格、製表符、換頁符等等。\s 等於[\f\n\r\t\v]。 |
29 | \S | 代表任何非空白字元。\S 等於[^\f\n\r\t\v]。 |
30 | \t | 代表Tab字元。\t 等於\x09和\cI。 |
31 | \v | 代表垂直Tab字元(Vertical Tab)。\v 等於\x0b和\cK。 |
32 | \w | 可為包括底線「_」的任何文字、數字。\w 等於「[A-Za-z0-9_]」。 |
33 | \W | 不可為包括底線「_」的任何文字、數字。。\W 等於「[^A-Za-z0-9_]」。 |
34 | \xn | 表示為n所代表的ASCII字元,n為十六進位值。十六進位值僅可寫兩個字元。例如,「\x41」匹配「A」。「\x041」則等價於「\x04&1」。 |
35 | \num | num是一個正整數。對前方括號內的字元做重複的動作。例如,「(.)\1」代表兩個連續的相同字元。 |
36 | \n | 標識一個八進制轉義值或一個向後參照。如果\n之前至少n個獲取的子運算式,則n為向後參照。否則,如果n為八進制數位(0-7),則n為一個八進制轉義值。 |
37 | \nm | 標識一個八進制轉義值或一個向後參照。如果\nm之前至少有nm個獲得子運算式,則nm為向後參照。如果\nm之前至少有n個獲取,則n為一個後跟文字m的向後參照。如果前面的條件都不滿足,若n和m均為八進制數位(0-7),則\nm將匹配八進制轉義值nm。 |
38 | \nml | 如果n為八進位數字(0-3),且m和l均為八進位數字(0-7),則代表八進位數字所代表的值。 |
39 | \un | n是一個用四個十六進位數字表示的Unicode字元。代表n所表達的字元。例如,\u00A9代表版權符號(©)。 |
40 | \on | n是一個用二個八進位數字表示的Unicode字元。代表n所表達的字元。例如,\o47。 |
http://deer.nublog.cc/article.php?i=20080225
http://ericbbs.blogspot.com/2009/08/2.html
沒有留言:
張貼留言