關於TPerlRegEx類使用上的一些經驗

uuxa發表於2010-12-26
最近工作時遇到了一些關於html解析方面的開發,下面說說在使用正規表示式時遇到的一些問題。[@more@]

在delphi裡可以使用類TPerlRegEx來實現對正規表示式的呼叫。

TPerlRegEx中有幾個函式和屬性我們在開發中會經常用到,如Subject、RegEx、Match、AgainMatch、SubExpressions、Replacement和ReplaceAll等等。

由屬性或函式名我們不難推測出他們的功能,這裡不詳細介紹屬性和函式的功能,做幾個例項供大家參考。

查詢指定格式的字串

我們要在字串中查詢類似如下格式的所有字串,

dse_sessionId=6Ee0Y05AkhLUeO4R8nenMvM,做過web開發的朋友可以輕易的看出這是html中會話ID,下面我舉例說明如何找出網頁中滿足如上格式的字串,

Const

CS_DEST_1 = 'dse_sessionId=w*';在w前有反斜扛

var
vPerlReg: TPerlRegEx;
begin
vPerlReg := TPerlRegEx.Create(nil);
vPerlReg.Subject := vList.Text; //將目標網而儲存在TStringList中
vPerlReg.RegEx := CS_DEST_1; //這裡是正規表示式
vPerlReg.Match; // 開始在網頁中查詢,成功找到匹配的字串時Match函式會返回true

vPerlReg.SubExpressions[0];// 這裡儲存了所查詢到的字串。

//注意上面的方法只找到滿足正規表示式中的一個字串,而不是所有的,如果想找到所有滿足正規表示式的字串,需要使用迴圈來完成,此時需要配合使用函式AgainMatch來完成迴圈。

// 還有一點需要注意,在目標裡如果包含有換行符,如#$D#$A,它會影響正規表示式查詢指定格式的字串,我的經驗是在具體執行查詢前將這些多餘的字元從目標中去掉。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7416120/viewspace-1043680/,如需轉載,請註明出處,否則將追究法律責任。

相關文章