こんな感じでしょうか?
テスト用のサンプルを載せておきます。8年ぶりぐらいのHSPなので、・・・・(^^;
わたしも詳しくはないのですが、注意事項として、正規表現パーターンを指定する場合は、
文字列変数に渡す場合と、input等に入力する場合は\\の数が異なるので注意して下さい。
// ***** メールアドレスの検索パータン *****
//[\\w\\d_-]+@[\\w\\d_-]+\.[\\w\\d._-]+ ;パターンを直接文字列変数に指定する場合
//[\w\d_-]+@[\w\d_-]+.[\w\d._-]+ ;パターンをinput等に入力して指定する場合
;***** 簡易版RegExpによる検索・置換モジュール *****
#module
#deffunc RegReplace var prm1, var prm2, var prm3, int prm4
; prm1 : 結果取得用バッファ (文字列型変数)
; prm2 : 検索用パターン
; prm3 : 置換用パターンまたは置換文字列
; prm4 : グローバルマッチ (prm4=1でTrue)
newcom regEx, "VBScript.RegExp"
comres prm1
regEx("Pattern")= prm2
regEx("Global") = prm4
;regEx("IgnoreCase") = 0
regEx->"Replace" prm1, prm3
delcom regEx
return
#deffunc RegSearch var prm1, var prm2, int prm3
; prm1 : 結果取得用バッファ (文字列型変数)
; prm2 : 検索用パターン
; prm3 : グローバルマッチ (prm3=1でTrue)
newcom regEx, "VBScript.RegExp"
regEx("Pattern") = prm2
regEx("Global") = prm3
;regEx("IgnoreCase") = 0
comres result
regEx->"Execute" prm1
sdim prm1
c = result("Count")
if c==0 {
delcom result
delcom regEx
return -1
}
repeat c
oMatch = result("Item", cnt)
;oMatch("FirstIndex")
;oMatch("Length")
prm1 += oMatch("Value")+"\n"
loop
delcom oMatch
delcom result
delcom regEx
return c
#global
;***** 検証用サンプル *****
screen 0,640,480,0,ginfo_dispx-640>>1,ginfo_dispy-480>>1
title "正規表現パターン検証用サンプル"
onexit *owari
; 起動ディレクトリ取得
sdim Startdir,260
if hspstat&1=0 { Startdir=dir_exe+"\\" : chdir dir_exe
} else {
Startdir=dir_cur+"\\"
}
chdir Startdir
sdim buf,32000
sdim oFile,260
sdim patstr,128
sdim repstr,128
color 0,0,0
font "MS ゴシック",14 : objmode 2
pos 6,6 : mes "File" : objsize ginfo(10)-150,22
pos 80,2 : input oFile
objsize 56,22
pos ginfo(10)-66,2 : button "参照",*fdialog
pos 6,30 : mes "検索文字列" : objsize ginfo(10)-150,22
pos 80,26 : input patstr
objsize 56,22
pos ginfo(10)-66,26 : button "検索",*search
pos 6,56 : mes "置換文字列" : objsize ginfo(10)-150,22
pos 80,54 : input repstr
objsize 56,22
pos ginfo(10)-66,54 : button "置換",*replace
;**** mesboxを作成 ****
pos 0,140
mesbox buf,ginfo(10)-4,ginfo(11)-164,5 : id=stat
stop
*fdialog
dialog "",16 : if stat=0 : stop
notesel buf : noteload refstr
oFile = refstr
objprm 0,oFile
objprm id,buf
stop
*search
RegSearch buf, patstr, 1
objprm id,buf
color 255,255,255 : boxf 8,80,ginfo(10),120
color 255,0,0
if stat=-1 {
pos 10,100 : mes "検索パターンに一致しません。"
}else{
pos 10,100 : mes "検索パターンに一致しました。 一致件数 = "+stat+"件"
}
color 0,0,0
stop
*replace
color 255,255,255 : boxf 8,80,ginfo(10),120
if patstr="" : dialog "検索文字列が指定されていません。",0 : stop
RegReplace buf, patstr, repstr, 1
objprm id,buf
color 0,0,0
stop
*owari
end