在2020年时,我在《自加载宏让你的Excel支持正则处理函数》一文中演示了给office的Excel增加正则处理函数,文本处理瞬间变得记得简单。VBA的宏要在WPS中使用,也只需要安装wps对应的vba库即可,上面的文章中有下载链接。

上一篇我也演示了一个js宏的小案例《WPS JS宏示例-批量添加链接》,今天我将使用JS宏开发正则处理函数,方便只安装WPS的电脑上使用。

JS宏开发正则处理函数

正则表达式的参考资料:

小小明 Python正则表达式速查表与实操手册
https://xxmdmst.blog.csdn.net/article/details/112691043

JS宏API文档直达页面:https://qn.cache.wpscdn.cn/encs/doc/office_v19/index.htm

新建Excel,打开开发工具->wps宏编辑器,编写如下代码:

function readValue(target){return typeof(target)=="string"?target:target.Item(1).Value2
}
//正则替换
function re_replace(text,pattern,repl){text=readValue(text),pattern=readValue(pattern),repl=readValue(repl);let regexp = new RegExp(pattern,"g");return text.replace(regexp, repl);
}
//正则查找
function re_findall(text, pattern){text=readValue(text),pattern=readValue(pattern);let regexp = new RegExp(pattern,"g");let result=[];while(a=regexp.exec(text)){result.push(a[0])}return result;
}
//正则抽取
function re_draw(text, pattern){text=readValue(text),pattern=readValue(pattern);let regexp = new RegExp(pattern,"g");let arr=regexp.exec(text);arr.shift();return arr.map(v=>v||"");
}
//正则判断,搜索是否包含指定的模式字符串
function re_test(text, pattern){text=readValue(text),pattern=readValue(pattern);let regexp = new RegExp(pattern,"g");return regexp.test(text);
}
//正则切割
function re_split(text, pattern){text=readValue(text),pattern=readValue(pattern);let rule = new RegExp(pattern,"g");return text.split(rule);
}

相对于vba而言,JS宏开发正则函数实在是过于简单。因此,相对之前的vba代码而言,我们还增加了正则匹配判断和正则切割的实现。

保存Excel文件为re.xlam,即自加载的宏文件。将其放到C:\Users\{userName}\AppData\Roaming\Microsoft\Excel\XLSTART\

注意:{userName}表示你当前的用户名。

我个人是将之前的vba宏和现在写的js宏都保存到了这个文件里:

对于WPS而已,Excel宏放在上述目录下能自动加载需要开启WPS的office兼容模式。在开始菜单的配置工具中:

个人开启的对2007的兼容模式,应该对2010的兼容模式也是该目录。

若不想开启兼容模式还可以通过everything搜索XLSTART获取其他的加载项目录,将文件放到其中。例如,我搜索到C:\Users\ASUS\AppData\Roaming\kingsoft\wps\XLSTART

JS正则函数测试

对于之前已经测试过的正则,这次也全部测试通过。

正则抽取:

=re_draw(A1,"([^|(]+)(?:\(共(\d+)层\))?(?:\|(\d{4})年建\|)?(\d室\d厅)\|([\d.]+)平米\|([东南西北]+)")
=re_draw(A1,"(.+?)(\d+)")

注意:对于数组公式(Ctrl+shift+Enter),WPS无法直接拖动填充柄。需要复制公式后,选中要填充的区域,再以公式形式选择性粘贴。

先复制数组公式,再直接在剩余区域粘贴也行,直接粘贴后也可以切换到纯公式的形式。

正则搜索:

=re_findall(A1,"[\u4e00-\u9fa5]+|^\w+$")
=re_findall(A1,"[-_\d]+")

正则替换:

=re_replace(A1,"[A-Z0-9_\-]+|\(.*\)", "")

下面我们测试一下正则匹配测试,需求是判断一组地址字符串中是否包含指定的关键字(任意一个都行):

=re_test(A1,"(?:葵涌|港岛|元朗|沙咀)")

某些情况下使用正则切割进行分列会很方便,例如字符串的分隔符是长度不确定的空白字符:

=re_split(A1,"\s+")

WPS增加正则处理函数,简直如虎添翼相关推荐

  1. 给你的Excel增加正则处理函数,简直如虎添翼

    小小明,「凹凸数据」专栏作者,Pandas数据处理专家,致力于帮助无数数据从业者解决数据处理难题. 凹凸们,大家好 我们都知道Pandas里支持正则替换比较舒服,但是Excel却没有一个可以支持正则的 ...

  2. Hive 正则匹配函数 regexp_extract

    Hive 正则匹配函数 regexp_extract 1.regexp_extract 语法:    regexp_extract(string subject,  string pattern,   ...

  3. Python这几个内置函数简直是屌爆了!!!

    这篇文章我们来看几个很有用的 Python 内置函数 .这些函数简直是屌爆了,我认为每个 Pythoner 都应该知道这些函数. 对于每个函数,我会使用一个普通的实现来和内置函数做对比. 如果我直接引 ...

  4. php 正则报错,PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析...

    本文实例讲述了PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法.分享给大家供大家参考,具体如下: 环境错误级别:error ...

  5. 正则-Strip函数

    正则-Strip函数 @(正则表达式)[正则,strip] 正则-Strip函数 strip的正则表达式版本 strip()的正则表达式版本 写一个函数,它接受一个字符串,做的事情和strip()字符 ...

  6. wps如何用循环函数_WPS版Excel中怎样使用函数进行运算

    Excel是大家常用的办公软件,其中的函数的基本知识和运算也是办公时常会用到的.不会用不怎么办? 刚好小编收集了一些常用的运算资料,下面小编马上给大家分享WPS中Excel中函数运算的使用方法,欢迎大 ...

  7. 这些函数简直是屌爆了

    Linux编程点击右侧关注,免费入门到精通! 译者丨TheLover_Z http://isbullsh.it/2012/05/05-Python-built-in-functions/ 这篇文章我们 ...

  8. wps如何用循环函数_6个基础WPS表格函数,学会就等于懂了大半表格技巧~

    使用 WPS 表格中的函数对数据进行计算与分析,可以大大提高办公效率. 今天的文章将介绍一些常用的函数,如自动求和函数.平均值函数.最大值函数.最小值函数等. 使用SUM 函数计算总销售额 如果要计算 ...

  9. pregreplacecallback php,php正则preg_replace_callback函数用法实例

    本文实例讲述了php正则preg_replace_callback函数的用法.分享给大家供大家参考.具体实现方法如下: php正则表达式功能强大,本范例演示了preg_replace_callback ...

最新文章

  1. 如何保护 SpringBoot 配置文件中的敏感信息
  2. Spring事务管理嵌套事务详解 : 同一个类中,一个方法调用另外一个有事务的方法
  3. 【CodeForces - 349A】Cinema Line (贪心(其实不是贪心),乱搞)
  4. STL中vectortype的复制
  5. HTML5与原生APP之争胜负已出?
  6. centos下openfire安装(转)
  7. python虚拟环境搭建mac_在MAC上安装Python虚拟环境
  8. ASP.NET以编程的方式动态的添加Css引用
  9. 30页不容错过的超赞项目管理PPT
  10. e.detail.value 小程序如何传值
  11. 李宏毅ML笔记14:降维/无监督-线性方法
  12. 1024 程序猿节当当买书大福利来了!
  13. oracle delete not in 优化,Oracle中的sql语句优化
  14. Linux超级强大的十六进制dump工具:XXD命令,我教你应该如何使用!
  15. 《热点:引爆内容营销的6个密码》第一章--书摘
  16. 9月11日 XE8移动开发入门(五)XE8中使用DataSnap三层架构和Beacon组件简介
  17. 专家纵论智能机器社会的风险与解决方案
  18. 计算机程序设计理论知识,计算机程序设计员理论知识试卷
  19. 汇丰银行软件测试英文面试问题,汇丰面试经验详细分享
  20. 医用温度传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

热门文章

  1. 幻城的QQ空间伤感日志:亲爱的还幸福吗?
  2. 【gdoi2018 day1】小学生图论题
  3. nas 软件 性能测试,铁威马NAS数据传输性能测试
  4. python dwg文件_Python将dwg文件转换为shapefi
  5. VM_02_linux常用命令及操作
  6. IaaS:基础设施及服务
  7. 微信小程序云开发实现收藏及收藏页面(带样式布局)
  8. 冲鸭!羊毛薅起来!当当618专享不到4折,Python书籍囤起来!
  9. 广东省新型数据中心发展白皮书
  10. js/Jquery通过MutationObserver实现监听dom元素的属性变化 用div简单实例