夜雨聆风学习资料网

ARTICLE · 1183934

Excel中的正则表达式函数

Excel中的正则表达式函数
学习Excel技术,关注微信公众号:
excelperfect

标签: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

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。
欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。

相关学习资料