今日、ZBlog アップロード モジュールをプログラミングしていたとき、記事内のファイル名を抽出するためにサブルーチンを使用する必要がありました。最初は問題を複雑にして、考えられるすべてのファイル名を一致させただけでなく、正規表現の長いリストを作成しました。長い間作業した後、突然、Z-Blog のアップロードされたファイルがすべてアップロードに保存され、非常に多くの複雑な一致が無駄に書かれていることに気づきました。 。 。将来兄弟が必要とする場合に備えて、無駄にはできません~~
以下のサブプロセスは、基本的には比較的優れたユニバーサルマッチングと見なすことができます。 (追記: CODE_LITE が UBB から抜け出していることに突然気づきました!!! めまい、自分で抜け出さなければなりませんでした...)
-------------------------------------------------- ----------------------------------
Dim objRegExp,Matches,i,DC9_DOT_CN_MATCH
Dim aryMatch()
Redim 保持 aryMatch(0)
objRegExp=新しい正規表現を設定します
objRegExp.IgnoreCase =True
objRegExp.Global=True
objRegExp.Pattern="(?:[[^]]+]([^[]+)[/[^]]+])|(?:(?:href|src) =([^s|^>]+)[""|>|s'])"
Set Matches = objRegExp.Execute("[img]2312.jpg[/img][img]2312.jpg[/img]hh[img][/img]<a href="" src="" Dim TmpMatch
i=0 から Matches.Count-1 の場合
InsertDataToArray(Matches(i).SubMatches(0),aryMatch) を呼び出します。
InsertDataToArray(Matches(i).SubMatches(1),aryMatch) を呼び出します。
次
へ i=0 から Ubound(aryMatch) へ
IsNull(aryMatch(i)) および Trim(aryMatch(i))<>"" でない場合は、Response.write aryMatch(i)&"<br>"
次の
関数 InsertDataToArray(Data,ByRef aryMatch)
If Trim(Data)<>"" then
データ=置換(データ,"","")
データ=置換(データ,"""","")
データ=置換(データ,"","/")
Data=Split(Data,"/")(Ubound(Split(Data,"/")))
Redim 保持 aryMatch(Ubound(aryMatch)+1)
DC9_DOT_CN_MATCH=False
j=0 の場合は Ubound(aryMatch)
aryMatch(j)=データの場合、DC9_DOT_CN_MATCH=True
次
DC9_DOT_CN_MATCH でない場合、aryMatch(Ubound(aryMatch))=Data
終了の場合
終了機能
------------------------------------------------ --------------------------------
実際、Z-Blog の場合は、Upload と一致するだけで済みます (ただし、手間を省くため) , 私は、より正確にするために、上記の一致にアップロードを追加しただけなので、実際には、次の方が理論的にはより単純であるはずです。 .) 次のように SPLit / を記述します。
-------------------------------------------------- ----------------------------------
Dim objRegExp,Matches,i,ZC_UPLOAD_MATCH
Dim aryMatch()
Redim 保持 aryMatch(0)
objRegExp=新しい正規表現を設定します
objRegExp.IgnoreCase =True
objRegExp.Global=True
objRegExp.Pattern="(?:[[^]]+][^[]*upload/([^[|^\|^/]+)[/[^ ]]+])|(?:(?:href|src)=""{0,1}[^s|^""|^>|^']*アップロード/([^s| ^>]+)[""|>|s'])"
Set Matches = objRegExp.Execute("[img]2312.jpg[/img][img]2312.jpg[/img]hh[img][/img]<a href="" src="" Data=Replace(データ、""""、"")
Redim 保持 aryMatch(Ubound(aryMatch)+1)
ZC_UPLOAD_MATCH=False
j=0 の場合は Ubound(aryMatch)
aryMatch(j)=Data の場合、ZC_UPLOAD_MATCH=True
次
ZC_UPLOAD_MATCH でない場合、aryMatch(Ubound(aryMatch))=Data
終了の場合
終了機能
出典: http://www.dc9.cn/post/279.html