ARTICLE · 1183934
Excel中的正则表达式函数
标签:Excel函数,REGEXTEST函数,REGEXEXTRACT函数,REGEXREPLACE函数
正则表达式(Regular Expressions),可用于通过代码识别文本中的模式。例如,从文本字符串中提取电子邮件地址。
下面介绍Excel中增加的正则表达式函数。
REGEXTEST函数
这个函数在文本中搜索模式,如果找到模式,则返回TRUE,否则返回FALSE。
REGEXEXTRACT函数
这个函数提取与模式匹配的文本。
REGEXREPLACE函数
这个函数用于替换与模式匹配的文本。
这些函数使用类似的语法及参数名。它们的语法分别为:
REGEXTEST(text,pattern,[case_sensitivity])
REGEXEXTRACT(text,pattern, [return_mode], [case_sensitivity])
REGEXREPLACE(text,pattern,replacement,[occurrence],[case_sensitivity])
参数text,包含要查看的文本所在的单元格或单元格区域引用。
参数pattern,是引号内的文本字符串,定义要搜索的模式。有许多代码、字符和符号用于构建模式。
参数case_sensitivity,可选的,如果省略,则默认值为0,选择是否区分大小写的搜索;使用1则进行不区分大小写的搜索,这可以缩短一些模式,只需要包含大写或小写字母,而不是两者都包含。
参数return_mode,可选的,如果省略,则默认值为0,表示选择第一个匹配项;1表示所有匹配;2表示捕获第一个匹配组。
参数replacement,在引号内需要被替换的文本。
参数occurrence,可选的,一个表示要替换的出现位置的数字。如果省略,则默认为1,即第一次出现的位置。最后一次出现的位置使用-1。
下面是用于构建模式的代码及组合:
[a-z] 匹配26个小写字母
[A-Z] 匹配26个大写字母
[0-9] 匹配任意数字
\d 匹配任意数字
\w匹配单词(字母、数字、下划线)
\b 单词边界、空格或文本的开头或结尾
\s 匹配空格字符,例如空格
\S 匹配非空格字符
下面是可用于构建模式的标识符:
* 零个或多个前导字符
+ 一个或多个前导字符
?零个或一个前导字符
{n} 前面的字符恰好出现n次
{n,} 前面的字符至少出现n次
{n,m} 前面的字符出现在n到m次之间
定位字符:
^ 字符串开头
$ 字符串结尾
注:主要的空白字符是空格,但还包括制表符、新行、回车符等。
正则表达式模式示例:
单词 [a-zA-Z]+
最后一个单词[a-zA-Z]+(?!.*[a-zA-Z])
整数 \d+
最后整数(\d+)(?!.*\d)
小数或整数\d+(\.\d+)?|\.\d+
最后一个小数或整数(\d+(\.\d+)?|\.\d+)(?!.*(\d+(\.\d+)?|\.\d+))
邮箱地址[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
日期(0?[1-9]|[12][0-9]|3[01])\/(0?[1-9]|1[0,1,2])\/(19|20)?\d{2}
这三个正则表达式函数都默认使用区分大小写的搜索,关闭区分大小写可以简化文本的模式。
示例:提取电子邮件地址
如下图1所示,使用Excel正则表达式函数从文本中提取电子邮件地址。

图1
单元格B1中的公式:
=REGEXEXTRACT(A1,"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}")
将其向下拖动复制到其它单元格。
也可以不区分大小写查找匹配项,这样可以将模式中的A-Z条目删除,以简化模式。即使用公式:
=REGEXEXTRACT(A1,"[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}",,1)
如下图2所示。

图2















































































