|
新版本的Delphi內(nèi)置了專門用于正則操作的庫System.RegularExpressions,該庫提供了一個專門的類TRegEx用來操作正則表達(dá)式。今天一起來看看Delphi正則表達(dá)式用法,包括創(chuàng)建正則表達(dá)式對象、匹配驗證、捕獲分組以及反向引用等。 新建TRegEx對象通過TRegEx.Create('your pattern')來新建正則對象。 uses System.RegularExpressions;var Regex: TRegEx; Input: string;begin Input := 'Hello world and love'; // 創(chuàng)建一個正則表達(dá)式對象,使用構(gòu)造函數(shù)指定正則表達(dá)式字符串 Regex := TRegEx.Create('world');end;驗證是否匹配(IsMatch)新建TRegEx對象之后,如果只需要驗證是否匹配,可以使用IsMatch方法。該方法返回一個boolean值,true表示匹配,false表示不匹配。 獲取第一個匹配的位置(Match)新建TRegEx對象之后,也可以用Match方法,獲取到具體的匹配信息,包括第一次匹配的位置(Index)。 var Match: TMatch;begin Match := Regex.Match(Input); if Match.Success then ShowMessage('第一次匹配的位置在: ' + IntToStr(Match.Index));end;獲取所有匹配結(jié)果(Matches)如果要獲取所有匹配結(jié)果,可以用Matches方法,該方法返回一個TMatchCollection,包含所有的匹配結(jié)果。 捕獲分組(Groups)在正則表達(dá)式中,使用圓括號 () 來定義捕獲組。每一個()表示一組匹配。匹配后,可以通過Groups獲取到所有匹配的分組信息。 比如下面的案例,定義分組正則表達(dá)式,可以獲取到所有的數(shù)字。 var Match: TMatch;begin Match := Regex.Match('123-45-6789'); if Match.Success then begin WriteLn('Group 1: ' + Match.Groups[1].Value); // 輸出:123 WriteLn('Group 2: ' + Match.Groups[2].Value); // 輸出:45 WriteLn('Group 3: ' + Match.Groups[3].Value); // 輸出:6789 end;end;匹配結(jié)果反向引用反向引用允許你在替換字符串中引用之前的捕獲組內(nèi)容,一般用于正則替換(Replace)場景。使用 $ 符號加組號(如 $1、$2)或命名組名(如 $groupname)來引用。 下面的案例中,<tag>text</tag>被替換成 $1 has been extracted,其中$1是匹配到的結(jié)果,即text。
|
|
|