;------------------------------- ; 正则替换时调用函数 By FeiYue ; ; 第三个参数为自定义函数名或函数对象 ; 自定义函数接受一个参数,该参数为对象 ; 对象.0为整个匹配,对象.N为第N个子匹配 ;------------------------------- RegExReplaceFunc(ByRef s, re, func) { if !IsFunc(func) return s SetBatchLines, % (bch:=A_BatchLines) ? "-1":"-1" re:=RegExMatch(re, "^[^()[\\]*\)") ? "OS" re : "OS)" re VarSetCapacity(ss, VarSetCapacity(s,-1)), r:="", i:=1 While (p:=RegExMatch(s,re,r,i)) and (len:=r.Len(0)) ss.=SubStr(s,i,p-i) . %func%(r), i:=p+len ss.=SubStr(s,i) SetBatchLines, %bch% return ss } s:="==abc==abc==" re:="(\w+)" MsgBox, 4096,, % RegExReplaceFunc(s, re, "StringUpper") return StringUpper(r) { return Format("{:U}", r.1) } StringUpper2(r) { s:=r.0 StringUpper, s, s return s }
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
评论(0)