微軟 vbscript regular expression 參考

資料處理過濾增益集』所使用的正規比對的原則是源自於微軟 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]/

 

『資料處理過濾增益集』介紹

系統的轉移更新如果牽涉外部資料的處理,對於IT人員而言通常是一件繁瑣的工作。像作者擔任的工作;每到新學年度就要整理學校相關的資訊系統,把已離校的同仁的資料從數個不同系統中移除或移轉,在這幾年校園資訊化的要求下,學校逐步建置許多的資訊系統;例如人事、薪資、電子信箱、網頁空間、課務、成績及學校資源管理等系統。雖然這些系統帶來使用者的某些便利,但是對於背後負責管理的資訊人員,卻是增加更沉重的負擔,各系統因為來源不同(不同年代,不同廠商開發),管理者最常必須處理的問題是不同系統的帳號資料同步。當然釜底抽薪的方法,是請廠商將所有系統進行統一帳號認證的處理,或是廢除舊有系統,重新建置新系統。但這些所要付出的代價可能不是單獨一間學校所能夠負擔,如果上級主管單位沒有支援還是空談。另外不同系統的資料的交換與利用也是IT人員的重要課題,這個增益集就是作者在處理這些外部資料工作時逐步開發而成,這個增益集利用微軟提供的vbscript regular expression 做為比對篩選原則,提供多種資料擷取、比對、取代的功能,對於文字資料處理具有多種強大的功能。在此部落格文章類別內,我將陸續舉幾個例子來說明這個增益集在資料處理的方便性。

重要提醒事項:請勿直接使用原始資料檔案進行操作,本增益集沒有提供復原功能,一但進行操作且存檔,將無法復原原始資料,建議拷貝一份原始檔,利用備份檔案進行操作。