『資料處理過濾增益集』所使用的正規比對的原則是源自於微軟 vbscript regular expression ,以下的說明是參考微軟的英文說明翻譯而來(原始英文的網頁,作者在微軟網站搜尋不到,如果有網友知道請來信告知(quiz@mail.cssh.tpc.edu.tw),以便作者加入資料引用來源說明,以免侵害著作權),以下說明是很早之前為了教育訓練,作者自行翻譯部分內容給同仁參考,微軟在.net中也提供regular expression 功能。
正規表示法語法參考
正規表示法語法簡介: (參考來源微軟正規表示法說明)正規表示法(Regular Express)是一種透過特定的字元組合成的一種字串比對規則,利用此比對規則可比對出特定的字串,我們將這個規則稱為樣版或模版(pattern),習慣會以//來表示樣版,例如要比對某字串中是否有n這個英文字母,則比對的樣版可寫成/n/。
以下就本程式所支持的正規表示法的字元符號的象徵意義與操作方式進行說明。
字元符號 | 說明 |
如欲比對的部分包括正規表示法中特殊的字元符號必須則必須加上符號,例如要比對某字串中是否有換行符號,樣版比對的寫法為/n/,如要比對字串中是否有這個符號,則樣版必須寫成/\/。 | |
^ | 這個符號代表從一行文字的開頭進行比對,例如要知道那一行文字開頭是否為a,樣版可寫成/^a/。 |
$ | 這個符號代表從一行文字的結束進行比對,例如要知道那一行文字結尾是否為a,樣版可寫成/a$/。 |
* | 加入這個符號代表進行加入比對時*前面的字元可以0到多個,例如樣版寫成/zo*/,符合的字串有"z"或"zo"或"zoooo". |
+ | 加入這個符號代表進行加入比對時*前面的字元至少1到多個,例如樣版寫成/zo*/,符合的字串有"zo"或"zoooo",但是z是不符合的。 |
? | 加入這個符號代表進行加入比對時*前面的字元0或1個,例如樣版寫成/z?oom/,符合的字串有zoom或oom。 |
. | 加入這個符號代表進行加入比對時任何單一字元都符合,除了換行字元。 |
( pattern ) | 在樣版外加上( )除了進行樣版比對,還可以將比對符合的子字串存入陣列中提供使用,如果要比對(),比須寫成()。 |
x | y | 要比對字串中有x或y可用此比對方式,例如 /g|food/ 符合的字串good 或 food. |
{ n } | 加入這個符號代表進行加入比對時{n}前面的字元必須為n個,n 必須為正整數. 例如/e{2}/符合的字串如feed或feel,但key不符合。 |
{ n ,} | 加入這個符號代表進行加入比對時{n,}前面的字元至少n個,n 必須為正整數. 例如/e{2}/符合的字串如feed或feel或geee,但key不符合。 |
{ n , m } | 加入這個符號代表進行加入比對時{n,m}前面的字元至少n個最多m個,n、m必須為正整數. 例如/e{1,2}/符合的字串如feed或key或feel,但geee不符合。 |
[ xyz ] | 這個樣版表示只要有[]中的任一字元都算符合,例如[abc]則符合的字串有after或book,不符合的如dog。 |
[^ xyz ] | 這個樣版表示只要有[]中的任一字元以外都算符合,例如[abc]則符合的字串有dog或food,不符合的如after或book。 |
b | 這個樣版表示必須包括一個英文字的邊界,英文字已空格為邊界,例如在"cook cake"中符合/kb/ 這個樣版的是cook的k而不是cake的k。 |
B | 這個樣版表示不包括一個英文字的邊界,英文字已空格為邊界,例如在"cook cake"中符合/kB/ 這個樣版的是cake的k而不是cook的k。 |
d | 這個樣版表示必須是數字. 也可以表示為[0-9].如要比對是否為八碼的數可寫成/d{8}/ |
D | 這個樣版表示必須是非數字. 也可以表示為[^0-9],^在[]中為否定作用而非一行之開頭。 |
f | 比對 form-feed 符號. |
n | 比對換行符號. |
r | 比對carriage return 換行符號 |
s | 比對任何空白字元包括space, tab, form-feed等等. 也可以寫成[ fnrtv]。 |
S | 比對任何非空白字元. 也可以寫成 [^ fnrtv]。 |
t | 比對 tab 符號. |
v | 比對vertical tab符號. |
w | 比對任何字元. 也可以寫成 [A-Za-z0-9_]. |
W | 比對任何非字元. 也可以寫成 [^A-Za-z0-9_]. 例如要比對出至少三個中文字以上的資料,可以寫成 W{3,} 。 |
範例:
1.篩選出座號為11~19的資料:輸入的樣版為/^1d{1}/
2.篩選出座號為偶數的資料:輸入的樣版為/[02468]/
3.篩選出座號為奇數的資料:輸入的樣版為/[13579]/