在VBA上可以调用正则表达式库,从而编写正则表达式自定义函数,这个相信不少VBA开发者已经熟知,但VBA的VBScript正则表达式库毕竟是一个过时的产品,不像.Net那样是与时俱进的,所以两者实现出来的正则功能还是有区别的,.Net的正则表达式更为强大和好用,用于开发自定义函数时,若用ExcelDna来开发,就可以用上.Net的正则的强大功能。
在Excel催化剂的自定义函数开源中,已经对代码作了全公开,此处,只是作一些代码的小小讲解,希望对VBA开发者过渡过来的VSTO开发有些帮助。
.Net正则有正则切割函数
正则切割,类似普通文本的split,但其分隔符可以用正则来匹配,是动态的非静态固定值
有单独的RegexOptions配置类,可丰富地控制正则的配置模式
丰富的配置模式
在配置模式中,用|代表多个选项同时成立。
以上代码发现,没有对常用的区分大小写等选项进行实现,因为在.net里有更强大的方式,可以精确控制选项的作用范围(无需整个匹配都对区分大小写来生效,可精确控制到哪些字符前中后才控制区分大小写等)
Excel催化剂自定义函数只对不能使用内联构造的选项进行参数配置,其他可内联构造的,直接写到Pattern里,即可精确匹配范围,又可在自定义函数最终实现时少写许多的参数。
Excel催化剂自定义函数只对不能使用内联构造的选项进行参数配置
关于内联构造的进一步学习可到官方文档中学习,非常详细。
其他构造 | Microsoft Docs https://docs.microsoft.com/zh-cn/previous-versions/dotnet/netframework-4.0/x044wc7s(v=vs.100)
结语
让.Net的强大威力,接入到Excel中使用,例如正则表达式,是一个非常不错的路径去增强Excel现有功能。
在Excel催化剂里,大量外部的力量来加强Excel自身无法实现的功能,后面陆续给大家推送一些笔者发现的很不错的轮子,不局限在.Net的现成类库还有其他外部专业程序猿写的类库轮子,供大家使用,带来代码的更大便利性。
技术交流QQ群
Excel催化剂开源讨论群二维码
关于Excel催化剂
Excel催化剂插件使用最新的布署技术,实现一次安装,日后所有更新自动更新完成,无需重复关注更新动态,手动下载安装包重新安装,只需一次安装即可随时保持最新版本!