WPS 好用的REGEXP正则函数用法详解!
WPS 好用的REGEXP正则函数用法详解!
REGEXP函数语法如下图所示。

一、提取模式
示例1、提取汉字
=REGEXP(A2,"[一-龟]+")
示例2、提取字母
=REGEXP(A5,"[A-z]+")
示例3、提取数字(包含小数)
=REGEXP(A8,"\d+\.?\d*"
二、判断模式
示例4、判断是否为手机号
=REGEXP(A2,"^1[3-9]\d{9}$",1)
三、替换模式
示例5、替换[]中的汉字后计算
=EVALUATE(REGEXP(A2,"\[[一-龟]+\]",2))
四、零宽断言
示例6、提取金额
=REGEXP(A2,"\d+(?=元|块)")
示例7、提取手机号
=REGEXP(A5,"(?<=^|\D)1[3-9]\d{9}(?=\D|$)")
注意事项:预查不支持量词(如 *、+ 或 {n,m}),如下图所示
五、分组匹配
示例8、银行卡号每4位加空格
=REGEXP(A2,"(.{4})",2,"\1 ")
REGEXP函数不支持分组提取,支持分组替换,在写正则表达式时,可以使用括号将指定表达式进行分组,REGEXP函数第3个参数匹配模式,设置(2-替换),分组后使用REGEXP函数第4个参数替换内容,根据实际需求使用"\"加1~N序号,可以引用正则表达式指定组匹配到的内容,示例中的正则表达式规则为匹配任意连续4位内容,因正则表达式加了括号,所以替换内容中"\1"可以返回匹配到的第1组内容,然后加一个" "(空格)作为替换内容,即可实现每4位加空格。
示例9、删除日期
=REGEXP(A2,"([一-龟]+)(\d{4}年\d{1,2}月\d{1,2}日)(\d+[元,块])",2,"\1\3")
正则表达式分为3组
第1组:([一-龟]+) 匹配姓名
第2组:(\d{4}年\d{1,2}月\d{1,2}日) 匹配日期
第3组:(\d+[元,块]) 匹配金额
第4个参数替换内容,引用第1、3组匹配结果,即可实现将第2组匹配的日期删除。
六、非贪婪模式
示例10、提取括号中的内容
=REGEXP(A2,"\(.+?\)")
如果不需要返回括号,可以使用预查,将不会返回括号
=REGEXP(A5,"(?<=\().+?(?=\))")
当一个量词(如 *、+ 或 {n,m})之后紧跟一个问号 ?,如 *?、+? 或 {n,m}?,则该量词变为非贪婪模式。
七、综合示例
示例11、统计姓名出现次数(一个单元格内会多次出现)
=COLUMNS(REGEXP(CONCAT($A$2:$A$7&"-"),C2))
示例12、拆分身份证号(将字符串逐个拆分)
=REGEXP(A2,".")
示例13、手机号、姓名互换位置
=REGEXP(A2,"(\d{11})([一-龟]+)",2,"\2\1")
八、其他说明
REGEXP函数第1个参数不支持数组,但是第2个参数支持数组,如下图所示。
=REGEXP(A2,{"[一-龟]+","[A-z]+","\d+"})
通过示例我们可以发现,当REGEXP第2个参数为数组时,函数将返回数组中每个正则表达式匹配到的首个结果,和TEXTSPLIT函数当第1个参数为数组时,返回拆分后的首个结果一样,并且如果需要对返回的结果进行再次计算,需要做类似"降维"的操作(对REGEXP函数返回结果连接空文本),如下图所示。
=REGEXP(A2,{"[一-龟]+","[A-z]+","\d+"})&""
当数组中的正则表达式匹配到多个值时,无法进行"降维"操作,所以REGEXP函数第2个参数使用数组的限制还是比较大的,正常情况下第2个参数不建议使用数组。
提取多组可以使用以下公式
=TOROW(VSTACK(REGEXP(A2,"[一-龟]+"),REGEXP(A2,"[A-z]+"),REGEXP(A2,"(?<=[a-z])\d+")),,1)
学习这个新函数吧。
快来试试吧。
以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。
学习资料见知识星球。
以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。
快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利!
更多技巧, www.excelbook.cn
欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;
1、价值上万元的专业的PPT报告模板。
2、专业案例分析和解读笔记。
3、实用的Excel、Word、PPT技巧。
4、VIP讨论群,共享资源。
5、优惠的会员商品。
6、一次付费只需129元,即可下载本站文章涉及的文件和软件。
