【WPS技巧分享】WPS表格-99%的人都用得上的几种正则提取写法(简单易懂)
创作者俱乐部成员
正则函数很好用,但无奈正则规则写法有很多,概念也很复杂,这里只用最通俗简单易懂的语言分享,分享最常用的几种写法,目标是让所有人都能体验正则函数的魅力,提高效率~
全文包括:字符提取和字符截取以及如何保留特殊转义字符原意知识的分享~
字符获取
数字提取
针对阿拉伯数字我们可以采取常用的[0-9],也可以采取[\d]来提取,如下图展示的为[\d]的情况~
[0-9] #获取数字正则规则
\d #获取数字正则规则
但以上对于数字的获取似乎只展示了阿拉伯数字,那对于罗马数字以上的提取方法可行吗?我们下面尝试一下~
从上面结果可以看出来[\d]并不能获取罗马数字,那么我们怎么获取罗马数字呢?我们可以采取[\p{N}]来获取,下面我们展示提取结果~
\p{N} #匹配数字,包括罗马数字
汉字提取
一般地对于常用汉字的提取我们可以使用[一-龟],但对于需要获取更多生僻字的情况下,我们则可以采用[\p{Han}]来提取,下面展示的为后者的提取情况~
[一-龟] #匹配常用汉字
\p{Han} #匹配汉字
英文提取
针对英文字母的获取我们可以采用常用的[A-Za-z]获取,也可以采用[\p{L}]来获取,由于对于大多数情况前者记忆比较容易,所以下面我们只展示一下后者的情况~
\p{L} #英文字母
\p{Ll} #英文小写
\p{Lu} #英文大写
标点提取
上面已经介绍了数字、汉字、英文的提取,下面我们就来到了标点符号的提取,如下图需要提取这一段字符串,那我们怎么提取呢?我们可以采用[\p{P}]来获取,结果展示如下图所示~
,。、;’【】!@#¥%…&*()-=+ #需要提取的字符串
\p{P} #提取标点符号的正则规则
符号提取
上面可以看出通过标点提取时,还有几个符号没有提取,例如【¥=+】这几个为什么这样呢?因为这几个不属于传统的标点范畴,而是属于货币符号和数学符号,那么我们怎么获取这些符号,我们需要使用另外一个正则规则[\p{S}],这个规则就能把其提取出来~
\p{S} #提取货币符号和数学符号
💡 | 以下总结一下字符获取~ 数字获取:[0-9]、[\d]、[p{N}] 汉字获取:[一-龟]、[\p{Han}] 英文获取:[A-Za-z]、[\p{L}] 标点获取:[\p{P}] 符号获取:[\p{S}] |
字符截取
后方截取向前匹配【需要获取字符的正则(?=截取字符)】
为了更好地理解,我们直接用例子展示,如果想获取截取字符前方匹配的内容,就需要用到【需要获取字符的正则(?=截取字符)】,这里"【内容1】{内容2}[内容3]"为原字符串,其中".*"代表匹配所有字符,如果这时我们需要截取"]"前的所有内容,我们就需要用到上面提到的规则,这里“]”就是截取字符,这里代表结尾是“]”,前面的所有字符,所以结果就是"【内容1】{内容2}[内容3”~
需要获取字符的正则(?=截取字符) #匹配【截取字符】前面符合需要获取字符的正则的内容,且不包括截取字符本身
前方截取向后匹配【(?<=截取字符) 需要获取字符的正则】
这个与上面相反,【(?<=截取字符) 需要获取字符的正则】,这里为了截取后面内容,截取字符就是“【”,意思就是匹配“【”后的所有字符,结果如下图所示~
(?<=截取字符) 需要获取字符的正则 #匹配【截取字符】后面需要获取字符的正则的内容,且不包括截取字符本身
中间匹配【(?<=截取字符)需要获取字符的正则(?=截取字符)】
前面说了向前匹配和向后匹配,那么当我们把他们组合起来就可以截取中间部分的内容了~
(?<=截取字符)需要获取字符的正则(?=截取字符) #匹配【截取字符】之间需要获取字符的正则的内容,且不包括截取字符本身
💡 | 总结: 【(?<=截取字符) 需要获取字符的正则】:匹配符合截取字符+需要获取字符的正则(不包括截取字符) 【需要获取字符的正则(?=截取字符)】:匹配需要获取字符的正则+截取字符(不包括截取字符) 【(?<=截取字符1)需要获取字符的正则(?=截取字符2)】:匹配截取字符1+需要获取字符的正则+截取字符1(不包括截取字符1、2) |
舍去前面保留后面【\K】
例如在字符串“abcd123ABCD456efgh789”需要获取小写英文后面的数字时,我们如何截取呢?首先我们根据上面的内容可以得知,获取小写英文时我们可以采用[a-z]获取,数字时我们可以通过“\d”
如上图所示采用“[a-z]+\d+”我们获得的是abcd123和efgh789,而并不是我们需要的123和789,那么我们能否将匹配出来的小写英文部分去掉呢?显然是可以的,这时我们只需要用到[\K]就可以了,效果如下图所示~
\K #舍去前面匹配部分保留后面
💡 | 总结:\K会先匹配符合完整正则规则的内容,然后将\K前面匹配部分舍去作为最终结果~ |
保留特殊字符匹配
前面说了很多种匹配情况,但使用过程中是否还遇到另外一种情况就是需要匹配特殊字符本身例如,我就需要在一个字符串中匹配"\d+"这个字符串片段出来,这时我们需要怎么处理呢?
\Q含有特殊字符的字符串\E #作用是使用\Q和\E中间部分的字符以原意进行匹配,不作为转义字符识别
💡 | 总结:\Q中间部分内容\E 的作用在于保持中间部分内容的原意,不进行转义~ |
WPS版本
12.1.0.18157-release(64位内测版)
系统版本
Windows11
KVP