关于恒耀平台

②WPS新增的REGEXP函数,有何特别魔力让人如此推荐?

         发布日期:2024-10-14 13:03    点击次数:174

付费文章、函数公式、职场模板 、财务应用、分析图表、练习题、财务机器人、快捷键、软件工具、表格合并、图表及可视化、Office 365、Power Query、表格美化、符号作用、生成序列、条件格式、学会骗、一本不正经、避坑指南、数据整理、筛选技巧、日期时间、偷懒宝典、漂亮3D、WPS技巧、PPT技巧、Word技巧

👆点击查看分类专题👆

 👇点击查看最新文章👇

 ①WPS新增的REGEXP函数,非常好用!强烈推荐

 为什么输入(c)会变成©,如何解决?

 为什么无法输入001、1-2、分数等内容

单元格中的数字为什么会变成乱码?

要查找的数据明明有,为什么找不到

这样使用“Excel偷懒的技术”公众号,快速提升Excel水平

昨天我们介绍了正则表达式的基础知识、REGEXP函数的提取和拆分的基础入法。

接昨天的文章:

①WPS新增的REGEXP函数,非常好用!强烈推荐

今天我们继续:

图片

按多个指定字符拆分

公式:

=REGEXP(A2,"[^*/-]+")

图片

正则表达式解释:

^:在字符集中,它表示“非”或“排除”的意思,即不匹配括号内列出的字符。

[^*/-]+ 这个正则表达式匹配任何不是星号(*)、斜杠(/)或连字符(-)的字符,并且这个模式会匹配一个或多个这样的字符(因为 + 表示匹配一次或多次)。

图片

取指定第几节

在上面的公式外套一个INDEX函数,取指定的第几节

公式:

=INDEX(REGEXP(A2,"[^*/-]+"),3)

图片

图片

提取多个指定字符前后的内容

提取“镇、乡、街道”之前(含)的内容

公式:

=REGEXP(A2,"(.+)[镇乡街道]")

图片

正则表达式解释:

(.+):这是一个捕获组,用圆括号 () 表示。. 表示匹配任意单一字符(除了换行符),而 + 表示匹配前面的元素一次或多次。因此,(.+) 会匹配一个或多个任意字符,并将这些字符作为一个捕获组。

[镇乡街道]:这是一个字符集,用方括号 [] 表示。它会匹配方括号内的任意一个字符。在这里,它会匹配“镇”、“乡”、“街”或“道”这四个字符中的任意一个。

提取“镇、乡、街道”之后(不含)的内容

公式:

=REGEXP(A2,"([^镇乡(街道)]+)$")

图片

正则表达式解释:

$:表示字符串的结尾。

图片

提取最后一个指定字符之前的内容(不含)

公式:

=REGEXP(A2,"^.*(?=\\)")

图片

正则表达式解释:

^: 表示匹配输入字符串的开始位置。

.*: 表示匹配任意字符(除换行符外)零次或更多次。

(?=\\): 这是一个零宽度正预测先行断言,表示匹配后面紧跟着一个反斜杠 \ 的位置。(两个反斜杠表示反斜杠本身。第一个反斜杠是转义符)

图片

使用REGEXP函数进行替换

公式

=REGEXP(A2,"(偷懒1)|(toulan3)|(偷lan2)",2," ")

图片

“|”是或的意思,三个分组之间用 | 分隔,表示逻辑“或”。这意味着只要单元格 A2 的内容匹配这三个子模式中的任意一个,正则表达式就会返回匹配成功。

REGEXP的第三参数为2表示进行替换。第三参数为替换后的内容。

图片

使用REGEXP函数进行插入

公式:

=REGEXP(A2,"([一-龟]+)(\d{2})(.+)$",2,"\1\2偷懒\3")

图片

解释:

"([一-龟]+)(\d{2})(.+)$"

([一-龟]+):这是一个捕获组,匹配一个或多个从“一”到“龟”的中文字符。在Unicode中,“一”到“龟”是一个连续的字符范围,因此这个表达式可以匹配这个范围内的任意中文字符。

(\d{2}):这是第二个捕获组,匹配恰好两个数字字符。

(.+):这是第三个捕获组,匹配一个或多个任意字符(除了换行符)。

$:表示字符串的结尾。

"\1\2偷懒\3"

\1:引用第一个捕获组匹配的内容。

\2:引用第二个捕获组匹配的内容。

偷懒:这是一个固定的文本字符串,将被插入到替换结果中。

\3:引用第三个捕获组匹配的内容。

另外,再来看群友分享的一个插入案例,一个很牛的正则表达式,值得好好揣摩:

在二个字的姓名中插入空格

公式:

=REGEXP(A2,"(?<=^|\+)([一-龟])([一-龟])(?=\+|/|$)",2,"\1 \2")

图片

解释:

"(?<=^|\+)([一-龟])([一-龟])(?=\+|/|$)"

(?<=^|\+):这是一个后视断言(lookbehind assertion),它表示匹配必须紧跟在字符串的开头 ^ 或者加号 + 之后。

([一-龟]):这是一个捕获组,匹配从“一”到“龟”这个范围内的任意一个中文字符。

(?=\+|/|$):这是一个前瞻断言(lookahead assertion),它表示匹配必须后面紧跟一个加号 +、斜杠 / 或者字符串的结尾 $。

替换模式

"\1 \2"

\1:引用第一个捕获组匹配的内容。

:插入一个空格。

\2:引用第二个捕获组匹配的内容。

图片

去掉带汉字的括号内的内容、中括号内的所有内容

这是RPA群群友的问题,去掉带汉字的括号内的内容、中括号内的所有内容

图片

公式:

=REGEXP(A2,"([(\(][^()]*[一-龟]+[^()]*[\))])|(【.*?】)",2,"")

图片

解释:

第一个捕获组:[(\(][^()]*[一-龟]+[^()]*[\))])

[(\(]:匹配一个左括号,可以是中文的左括号 ( 或英文的左括号 (。

[^()]*:匹配零个或多个不是左括号 ( 或右括号 ) 的字符。

[一-龟]+:匹配一个或多个从“一”到“龟”的中文字符。

[^()]*:再次匹配零个或多个不是左括号 ( 或右括号 ) 的字符。

[\))]:匹配一个右括号,可以是中文的右括号 ) 或英文的右括号 )。

这个捕获组主要用于查找被括号包围的字符串,其中至少包含一个从“一”到“龟”的中文字符。

第二个捕获组:【.*?】

【:匹配中文的左方括号。

.*?:非贪婪模式匹配零个或多个任意字符(除了换行符)。

】:匹配中文的右方括号。

这个捕获组用于查找被中文方括号包围的任意字符串。

替换模式:""

在这个例子中,替换模式是一个空字符串 "",这意味着如果找到匹配项,它将被替换为一个空字符串,即删除匹配到的内容。

如果要求和,还要使用substituts函数替换将中括号、大括号替换为小括号,然后再用EVALUATE函数求和(Excel只能在定义名称中使用)

完整公式

=EVALUATE(SUBSTITUTES(REGEXP(A2,"([(\(][^()]*[一-龟]+[^()]*[\))])|(【.*?】)",2,""),{"{","[","(","}","]",")"},{"(","(","(",")",")",")"}))

图片

图片

提取整理个人信息

个人信息姓名在最前面,其他信息顺序不一致,且分隔符不一致。要用公式提取比较麻烦,用正则表达式来提取却得心应手。

数据:

张三、手机号:13912345678 车牌 京AF12345 生日:1990年5月15日 出生地:北京市海淀区

欧阳峰,籍贯:上海市徐汇区 车号:沪B6789Q 手机号:13698765432 出生:1985-10-20

慕容吹雪 粤CD54321 广东省深圳市 1988年3月25日 13787654321

赵六、手机:13565432109 江苏省南京市 出生:1995-7-18 车牌号:苏D0987X

刘牛 四川省成都市 1983-12-18 手机13876543210 车牌 川F23456

图片

公式:

提取姓名:

=REGEXP(A2,"(^[一-龟]+)")

提取手机号:

=REGEXP(A2,"([0-9]{11})")

提取籍贯(五个汉字以上):

=REGEXP(A2,"([一-龟]{5,})")

提取出生日期:

=--REGEXP(A2,"(\d{4}年\d{1,2}月\d{1,2}日|\d{4}-\d{1,2}-\d{1,2})")

提取车牌号:

=REGEXP(A2,"(?<=[^一-龟\w])([一-龟]\w+)")

提取手机号、籍贯、车牌号等这些都不是很精确的写法。

本文收录于合集WPS技巧、函数讲解及经典公式

如需加入RPA群,请备注RPA

如需加入图表群,请备注图表

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。

 
友情链接:

Powered by 恒耀平台 @2013-2022 RSS地图 HTML地图