Delphi 中經常使用的正規表示式

2021-08-17 15:09:48 字數 2607 閱讀 6724

在 delphi 中使用正規表示式, 目前 perlregex 應該是首選, 準備徹底而細緻地研究它. 

官方**:  xpressions.info/delphi.html

二、安裝方法:

perlregex提供了tperlregex類。主要用法是: 

regex : tperlregex; 

.... 

regex := tperlregex; 

try 

regex.subject := '要匹配的正文'; 

regex.regex := '正規表示式'; 

if regex.match then .... 

finally 

regex.free 

end; 

如果要多次匹配並做一些處理,可以: 

matched : boolean; 

.... 

regex.match; 

while regex.foundmatch do 

begin 

.... 

regex.matchagain; 

end; 

如果要替換匹配到的內容,可以 

regex.subject := '要匹配的正文'; 

regex.regex := '正規表示式'; 

regex.replace := '替換的字串' 

if regex.match then regex.replaceall;   //結果在regex.subject 

或者 if regex.match then result := regex.replacement; 

匹配到的字串放在regex.matchedexpression中,長度在regex.matchedexpressionlength中,上一次匹配的結束位置在regex.stop中 

匹配到的子串放在regex.subexpressions中,子串個數在regex.subexpressioncount中。 

如果正則式很複雜而且常用,可建立乙個生存期相對長的tperlregex例項.設定好regex屬性後,使用.study方法對正規表示式進行預處理.據幫助文件說,文件資料會大大提高效率. 

詳情可參考文件。有一點文件上沒有提到(又或者我看漏了),在第一次匹配之後,如果沒有重新賦值subject,下一次匹配無論用match或者matchagain,都是從上次的結束位置開始。所以如果要重新開始匹配,應先把regex.start := 0; 

四、正則單元

程式**

unit unitregex; 

inte***ce 

uses 

perlregex; 

function checkemail(emailaddr: string): boolean; 

function checkstrornumber(str: string): boolean; 

var 

perlregex: tperlregex; 

implementation 

//email電子郵箱檢測 

function checkemail(emailaddr: string): boolean; 

begin 

perlregex := tperlregex.create(nil); 

perlregex.subject := emailaddr; 

perlregex.regex := '\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*'; 

result := perlregex.match; 

end; 

//字元、數字檢測 

function checkstrornumber(str: string): boolean; 

begin 

perlregex := tperlregex.create(nil); 

perlregex.subject := str; 

perlregex.regex := '^[a-za-z0-9]+$'; 

result := perlregex.match; 

end; 

end.

五、使用例項

程式**

六、常用正則表式

--------------------------------------

試驗:刪除http所有標籤

var 

reg: tperlregex; 

str:string; 

begin 

str:=memo1.text; //有<>等內容 

reg := tperlregex.create(nil);

reg.subject := memo1.text; 

reg.regex   := '\<[^>]+()\>';

while reg.matchagain do 

begin 

str:=stringreplace(str,reg.subexpressions[0],'',[rfreplaceall]); //刪除http標籤 

end; 

showmessage(str); 

freeandnil(reg);

end;

VC 中經常使用的函式!

1 domodal 函式用來直接顯示有模式對話方塊,create 用於建立無模式對話方塊。3 得到hwnd函式 findwindow findwindowex hwnd hwnd findwindow t ieframe null if hwnd 4 cstudlg afxgetmainwnd af...

HTML中經常使用的單位

css3新增加的相對單位,相對於html的根元素,修改根元素可以調整所有字型大小,還可以避免字型大小逐層復合的連鎖反應,未經過調整的瀏覽器,16px 1em。主要用於螢幕適配布局,移動端使用比較廣泛。使用這種方式,只要根據不同螢幕設定不同的根元素即可使系統適配不同的螢幕。相對於當前物件內文字的尺寸來...

QTP中經常使用的VB語句

1.輸出語句msgbox 輸出需要返回的資料值,加上 表示原樣輸出 msgbox hello world msgbox hello world result msgbox hello world vbokonly,greeting msgbox hello world vbokonly,greeti...