本帖最后由 龙逸凡 于 2024-5-27 14:53 编辑
WPS最近版本新增了Excel都没有的函数 - 正则表达式函数REGEXP
- 批量替换函数SUBSTITUTES
- 四舍五入六成双函数ROUNDBANK
这一波更新,领先Excel,给WPS点赞。 【说明】: Excel也在内测正则表达式函数,一共三个REGEXEXTRACT、REGEXREPLACE、REGEXTEST,所以,本文对没有使用WPS的朋友也有阅读价值,:
今天我们来介绍正则表达式函数REGEXP。 这个函数非常好用。有了它,很多文本函数都可以不用了。 在介绍它之前,我们一起来学习一下正则表达式的基础知识。
![](https://pic1.zhimg.com/v2-4461c5078e4160176321a317fb477414_b.jpg)
正则表达式基础知识 正则表达式就是用一些特殊的字符来表达或总结字符串的规律或特性。比如
用\d或[0-9]表示数字,那么\d{11}就表示11位的整数。 操作符 | 含义 | 示例 | . | 小数点,表示任何单个字符 | | [] | 中括号表示字符集,对单个字符给出取值范围 | [abc]表示a或b或c,[a-z]表示a-z单个字符(任意一位小写字母)[0-9]表示单个任意数字 | [^] | 非字符集。对单个字符给出排除范围 | [^abc]表示非a或非b或非c的单个字符 | * | 星号表示前一个元素的0次或者无限次的扩展 | abc*表示ab、abc、abcc、abcccc等等(匹配ab) | + | 前一个元素的1次或者无限次的扩展 | abc+表示abc、abccc、abcc、abccccc等(不匹配ab) | ? | 前一个元素的0次或者1次扩展 | abc?仅表示ab、abc。可以把“4th|4”简化为“4(th)?”。我们看到“?”作用的元素是整个括号了 | | | 左右表达式中的任意一个。左右表达式可以是多字符。注意与[ ]的区别 | abc|def表示abc、def | {m} | 扩展前一个字符m次 | ab{2}c表示abbc | {m,n} | 扩展前一个字符m至n次(含m和n次) | ab{1,2}c匹配abc、abbc | ^ | 匹配字符串开头 | ^abc表示abc在一个字符串的开头,即不匹配aabc | $ | 匹配字符串结尾 | abc$表示abc在一个字符串的结尾,即不匹配abcd | () | 分组标记内部只能使用|操作符 | (abc)表示abc ,(abc|def)表示abc、def | \d | 一位数字,等价于[0-9] | | \w | 组成单词的字符,等价于[A-Za-z0-9_] | 表示字符小写大写的a-z和数字0-9以及下划线_ |
下面我们来看一下REGEXP函数的基本语法及应用案例
![](https://pic3.zhimg.com/v2-75d87394feebd2fc363e7de679eb2d0a_b.jpg)
REGEXP语法 =REGEXP ( 字符串,正则表达式,匹配模式,替换内容 ) 第三参数的匹配模式有三种:0提取、1判断、2替换
![](https://pic4.zhimg.com/v2-25310c3b58d6fbac2dc0dfd7fcba446f_b.jpg)
提取字符串中的数字 ![](https://pic2.zhimg.com/v2-9ff8d541f06766326ac1ef107d256cb9_b.jpg)
如果字符串中有多个数字,在最外围套一个SUM函数,就能求和 =SUM(--REGEXP(A5,"[0-9.-]+"))
![](https://pic4.zhimg.com/v2-49b4b083fbedb02a6f1aca54cc11a7c3_b.jpg) 拆分中英混合的字符串 ![](https://pic3.zhimg.com/v2-ff44d35428ba958d01519d25450f48c2_b.jpg)
提取中文的公式: =REGEXP(A1,"[一-龟]+") [一-龟]代表汉字,详细解释请阅读下面的文章
提取非中文的公式: =REGEXP(A1,"[^一-龟]+") 正则表达式解释:
![](https://pic1.zhimg.com/v2-fe0ee00c5d4364534b08c17ec45aaab8_b.jpg)
提取第一个汉字后的所有内容 公式: =REGEXP(A2,"[一-龟]+.*") ![](https://pic4.zhimg.com/v2-db10f8bb62f1b0ee70953b8937f59123_b.jpg)
![](https://pic2.zhimg.com/v2-ec71101dfecfb99d92be65d1d7df38c5_b.jpg)
提取第一个汉字前的内容 ![](https://pic3.zhimg.com/v2-bc942a690be395aa0d9d7c35d3efab82_b.jpg)
公式 =REGEXP(A2,"^[^一-龟]+") 正则表达多解释:
![](https://pic1.zhimg.com/v2-8360f7ab5cbcd46463e0a9893f3ad444_b.jpg) 按指定字符拆分 ![](https://pic1.zhimg.com/v2-6b8f2459a782cd6a5fcafe4e8a8ea3d4_b.jpg)
公式: =REGEXP(A2,"([^,]+)") 按换行符拆分 ![](https://pic2.zhimg.com/v2-75ffc53a6ba1ff59108192579de4a541_b.jpg)
=REGEXP(A2,".+")
还有其他更复杂的用法,我们下篇文章再介绍。 ![](https://pic2.zhimg.com/v2-8434cd1c4124d982e0fee691ba47b015_b.jpg)
![](https://pic1.zhimg.com/v2-441ebc8d52b18b16c408379937601e40_b.jpg)
![](https://pic4.zhimg.com/v2-081cb93e97637bec0fd741e8add034b3_b.jpg)
本篇到此为止, 后面还有二篇,欢迎阅读:
|