在Excel的数据处理中,从杂乱无章的内容里提取特定信息,如电话号码、手机号等,一直是个颇具挑战性的任务。
曾经,面对此类问题,我们往往只能借助复杂的VBA编程来解决,这让许多用户望而却步。然而,随着新函数REGEXP的出现,一切变得轻松简单。接下来,就让我们深入了解如何运用REGEXP函数解决各种实际提取问题。
一、REGEXP函数在不同场景下的应用
01、仅提取手机号
当数据中仅存在手机号时,提取操作最为简单,将手机号视为连续的数字即可。在REGEXP函数中,“[0-9]+”表示连续的数字。例如,要从B1单元格中提取手机号,公式为“=REGEXP(B1,"[0-9]+")” ,通过这个公式,Excel能够快速准确地从单元格内容中抓取到连续的数字,即手机号。
02、提取多种类型数字(手机号、电话、年份)
若数据中同时存在手机号(11位数字)、电话(一般7位以上数字)和年份(4位数字),我们需要根据不同数字的位数特征进行提取。对于提取7位以上的连续数字(手机号和电话),使用“[0-9]{7,}” ,公式“=REGEXP(B4,"[0-9]{7,}")”可实现这一操作。
若要提取4位数的年份,如“2023年”,则使用“[0-9]{4}年”,公式“=REGEXP(B4,"[0-9]{4}年")”能精准提取出年份。这里的“{4}”表示固定的4位数,“{4,}”则表示4位数以上,逗号起到了界定“以上”的作用。
03、提取含区号的电话和年份
当数据中存在电话(含有区号)和年份两种类型的数字时,我们分别处理。
区号一般是3-4位数字,后面跟着符号“-”,可用“[0-9]{3,4}-”表示,公式“=REGEXP(B7,"[0-9]{3,4}-")”可提取出区号部分。电话主体部分用“[0-9]{7,}”表示,公式“=REGEXP(B7,"[0-9]{7,}")”可提取电话主体。
将这两个公式组合起来,“=REGEXP(B7,"[0-9]{3,4}-[0-9]{7,}")”就能完整地提取出包含区号的电话号码。
04、提取身份证号码(含字母X)
上个月有粉丝留言关于身份证号码的提取问题,身份证号码一般是18位,正常情况下用“[0-9]{18}”表示。但部分身份证号码包含字母X,此时只需写成“[0-9X]{18}” ,公式“=REGEXP(B10,"[0-9X]{18}")”就能准确提取出包含字母X的身份证号码。
05、综合案例
在实际应用中,数据可能更加复杂多样。要提取电话和手机,使用“[0-9]{7,}”;提取包含区号的电话,使用“[0-9]{3,4}-[0-9]{7,}”。传统公式遇到提取不了的情况会返回错误值,而REGEXP函数可以直接将这两个表达式合并,用“|”隔开,公式“=REGEXP(A2,"[0-9]{3,4}-[0-9]{7,}|[0-9]{7,}")”就能在复杂数据中准确提取出我们需要的电话号码信息。
REGEXP函数,只要是字符提取的几乎都可以通过这个函数搞定,名副其实的字符提取新老大。
正则表达式基础知识详解
在正则表达式中,各类操作符有着独特的含义与用法:
- 小数点(.):代表任何单个字符。例如,当使用正则表达式匹配文本时,若模式中含有“.”,它能匹配到任意一个字符。
- 中括号([]):用于表示字符集,也就是对单个字符给出取值范围。像“[abc]”,意味着它能匹配到字符a、b或者c当中的任意一个;“[a - z]”则表示可以匹配从a到z的任意一位小写字母;“[0 - 9]”能够匹配单个的任意数字。
- 脱字符([^]):属于非字符集,作用是对单个字符给出排除范围。以“[^abc]”为例,它匹配的是除了a、b、c之外的任意单个字符。
- 星号(*):表示前一个元素的0次或者无限次扩展。比如“abc*”,它可以匹配“ab”(此时c出现0次),也能匹配“abc”“abcc”“abcccc”等(c出现1次或多次) 。
- 加号(+):代表前一个元素的1次或者无限次扩展。例如“abc+”,它匹配“abc”“abccc”“abcc”“abccccc”等情况,但不会匹配“ab”,因为“+”要求前一个元素至少出现1次。
- 问号(?):表示前一个元素的0次或者1次扩展。如“abc?”,仅能匹配“ab”(此时c出现0次)和“abc”(c出现1次)。另外,“4th|4”可以简化为“4(th)? ”,这里“?”作用的元素是整个括号内的“th” 。
- 竖线(|):表示左右表达式中的任意一个,且左右表达式可以是多字符。要注意它与“[]”的区别,例如“abc|def”,它匹配的结果要么是“abc”,要么是“def” 。
- 花括号{m}:是用来扩展前一个字符m次。像“ab{2}c”,其匹配的结果是“abbc” ,即字符b出现了2次。
- 花括号{m,n}:代表扩展前一个字符m至n次(包含m和n次)。例如“ab{1,2}c”,它能匹配“abc”(此时b出现1次)以及“abbc”(b出现2次) 。
- 脱字符(^):用于匹配字符串开头。比如“^abc”,表明“abc”必须出现在一个字符串的开头位置,像“aabc”这样的字符串就无法匹配。
- 美元符号($):abc$作用是匹配字符串结尾。例如”,意味着“abc”要出现在一个字符串的结尾处,“abcd”就不符合匹配条件。
- 小括号(()):作为分组标记,内部只能使用“|”操作符。“(abc)”代表的就是“abc” ,“(abc|def)”则表示匹配“abc”或者“def” 。
- 反斜杠d(\d):它等价于“[0 - 9]”,即代表一位数字。
- 反斜杠w(\w):等价于“[A - Za - z0 - 9_]”,表示组成单词的字符,涵盖了小写大写的a - z字母、数字0 - 9以及下划线“_” 。
REGEXP函数凭借其强大的字符提取能力,成为了Excel数据处理中当之无愧的字符提取新老大。希望通过今天的分享,大家能够熟练掌握REGEXP函数的应用和正则表达式的基础知识,在数据处理中更加得心应手。欢迎大家一起讨论,共同探索更多实用的数据处理技巧。
评论 (0)