本帖最后由 龙逸凡 于 2024-5-28 14:22 编辑
上一篇我们介绍了正则表达式的基础知识、REGEXP函数的提取和拆分的基础入法。 今天我们继续:
![](https://pic1.zhimg.com/v2-4461c5078e4160176321a317fb477414_b.jpg) 按多个指定字符拆分 公式: =REGEXP(A2,"[^*/-]+") ![](https://pic3.zhimg.com/v2-e812476b720764016b653f4685ee85f6_b.jpg)
正则表达式解释: - 由于EH对帖子长度有限制,现将正则表达式的解释删除,
![](https://pic3.zhimg.com/v2-75d87394feebd2fc363e7de679eb2d0a_b.jpg) 取指定第几节 在上面的公式外套一个INDEX函数,取指定的第几节 公式: =INDEX(REGEXP(A2,"[^*/-]+"),3) ![](https://pic3.zhimg.com/v2-5a648907cd6f9b9029d0f7a9ba795aca_b.jpg)
![](https://pic4.zhimg.com/v2-25310c3b58d6fbac2dc0dfd7fcba446f_b.jpg) 提取多个指定字符前后的内容 提取“镇、乡、街道”之前(含)的内容 公式: =REGEXP(A2,"(.+)[镇乡街道]") ![](https://pic1.zhimg.com/v2-646e4bb876b7d14f23469bb4a2992e78_b.jpg)
提取“镇、乡、街道”之后(不含)的内容 公式: =REGEXP(A2,"([^镇乡(街道)]+)$") ![](https://pic4.zhimg.com/v2-8fd01223915d9be5a8c293b14405dcf7_b.jpg)
![](https://pic4.zhimg.com/v2-49b4b083fbedb02a6f1aca54cc11a7c3_b.jpg) 提取最后一个指定字符之前的内容(不含) 公式: =REGEXP(A2,"^.*(?=\\)") ![](https://pic3.zhimg.com/v2-5c1dbdea7d636c1ca6cd3c41353cb5e2_b.jpg)
![](https://pic1.zhimg.com/v2-fe0ee00c5d4364534b08c17ec45aaab8_b.jpg) 使用REGEXP函数进行替换 公式 =REGEXP(A2,"(偷懒1)|(toulan3)|(偷lan2)",2," ") ![](https://pic2.zhimg.com/v2-559de35cca4422ad1150e77f5ee1f981_b.jpg)
“|”是或的意思,三个分组之间用 | 分隔,表示逻辑“或”。这意味着只要单元格 A2 的内容匹配这三个子模式中的任意一个,正则表达式就会返回匹配成功。 REGEXP的第三参数为2表示进行替换。第三参数为替换后的内容。
![](https://pic2.zhimg.com/v2-ec71101dfecfb99d92be65d1d7df38c5_b.jpg) 使用REGEXP函数进行插入 公式: =REGEXP(A2,"([一-龟]+)(\d{2})(.+)$",2,"\1\2偷懒\3") ![](https://pic1.zhimg.com/v2-d68aee0cf8e3be4e2d7e71925fba491c_b.jpg)
另外,再来看群友分享的一个插入案例,一个很牛的正则表达式,值得好好揣摩: 在二个字的姓名中插入空格 公式: =REGEXP(A2,"(?<=^|\+)([一-龟])([一-龟])(?=\+|/|$)",2,"\1 \2")
![](https://pic4.zhimg.com/v2-35dc01cca4066d8a7e48e0d1a1e203bb_b.jpg)
![](https://pic1.zhimg.com/v2-8360f7ab5cbcd46463e0a9893f3ad444_b.jpg) 去掉带汉字的括号内的内容、中括号内的所有内容 这是RPA群群友的问题,去掉带汉字的括号内的内容、中括号内的所有内容 ![](https://pic2.zhimg.com/v2-aaf5c415e771ff609a34f46a3bc947dd_b.jpg)
公式: =REGEXP(A2,"([(\(][^()]*[一-龟]+[^()]*[\))])|(【.*?】)",2,"") ![](https://pic2.zhimg.com/v2-3af569ea4e4b7789be3947ea405c4625_b.jpg)
替换模式:""在这个例子中,替换模式是一个空字符串 "",这意味着如果找到匹配项,它将被替换为一个空字符串,即删除匹配到的内容。 如果要求和,还要使用substituts函数替换将中括号、大括号替换为小括号,然后再用EVALUATE函数求和(Excel只能在定义名称中使用) 完整公式 =EVALUATE(SUBSTITUTES(REGEXP(A2,"([(\(][^()]*[一-龟]+[^()]*[\))])|(【.*?】)",2,""),{"{","[","(","}","]",")"},{"(","(","(",")",")",")"})) ![](https://pic3.zhimg.com/v2-463a449d05469858725427cd6d24cab6_b.jpg)
![](https://pic3.zhimg.com/v2-5d33189f42ee8956792c765998fc8a8a_b.jpg) 提取整理个人信息 个人信息姓名在最前面,其他信息顺序不一致,且分隔符不一致。要用公式提取比较麻烦,用正则表达式来提取却得心应手。 ![](https://pic2.zhimg.com/v2-321a77fe6199edb82f513b875ed05af9_b.jpg)
公式: =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+)")
这是REGEXP函数的第二篇,后面还有一篇,欢迎阅读
|