付费文章、函数公式、职场模板 、财务应用、分析图表、练习题、财务机器人、快捷键、软件工具、表格合并、图表及可视化、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 如需加入图表群,请备注图表
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。
|