Excel 正则表达式函数
在 Excel 中,我们经常需要对数据进行筛选、搜索或替换操作。在传统的方法下,我们需要手动去寻找、编辑数据,这个过程十分繁琐而且漏洞百出。Excel 正则表达式函数为我们提供了一种更快更准确的方法来处理数据,那么本文将带你深入探讨 Excel 正则表达式函数的各种用法。
Excel 正则表达式函数简介
首先,让我们来了解一下什么是正则表达式。在计算机科学中,正则表达式(Regular Expression)是一种文本模式,用于描述一类字符串的特定模式。Excel 正则表达式函数可以识别符合该模式的文本,进而实现各种数据操作:匹配和替换。
在 Excel 中,使用正则表达式需要使用函数 REGEXMATCH、REGEXREPLACE 和 REGEXEXTRACT。以下是对这些函数的简单介绍:
REGEXMATCH:用于判断某个字符串是否符合某个正则表达式。如果符合,返回TRUE;否则返回FALSE。-
REGEXREPLACE:用于查找并替换某个字符串中符合某个正则表达式的部分。语法为:REGEXREPLACE(text, regular_expression, replacement)。其中,text为需要被修改的文本,regular_expression为正则表达式,replacement为需要被替换成的文本。 -
REGEXEXTRACT:用于从某个字符串中提取出符合某个正则表达式的部分。语法为:REGEXMATCH(text, regular_expression)。其中,text为需要被提取的文本,regular_expression为正则表达式。
除此之外,还有一些使用细节,接下来我们将会细讲。
基本正则表达式语法
在正则表达式中,特定的字符代表特定的含义。这些字符被称为“元字符”,而元字符组成了正则表达式的基本语法。
.:点表示匹配除了换行符\n以外的任何一个字符;^:匹配字符串开始的位置。在多行匹配中,它还可以匹配行开始的位置(即如果该字符紧跟在换行符后面,则匹配该换行符后面的第一个字符);$:匹配字符串结束的位置。在多行匹配中,它还可以匹配行结束的位置(即如果该字符前面紧跟着一个换行符,则匹配该换行符前面的字符);*:匹配前面的字符 0 次或多次。比如ab*c可以匹配abc、abbc、ac等;+:匹配前面的字符 1 次或多次。比如ab+c可以匹配abc、abbc等,但不能匹配ac;?:匹配前面的字符 0 次或 1 次。比如ab?c可以匹配ac和abc;|:或。比如a|b可以匹配a或b;[]:匹配方括号中的任意一个字符。比如[abc]可以匹配a、b或c;[^]:否定方括号中的任意一个字符。比如[^abc]可以匹配除了a、b或 `c以外的任意字符;[a-z]:范围,表示匹配从a到z范围内的任意小写字母;\d:匹配任意一个数字字符,相当于[0-9];\D:匹配除数字字符以外的任何一个字符,相当于[^0-9];\s:匹配任意一个空白字符(包括空格、制表符、换行符等);\S:匹配任意一个非空白字符;\w:匹配任意一个字符(包括英文字母、数字以及下划线_);\W:匹配任意一个非\w字符。
除了这些元字符之外,还有一些特殊字符需要注意:
\:在正则表达式中,\常常被用来转义一些特殊字符。例如\.表示匹配一个.,而不是元字符中的含义;():圆括号用来限定所匹配的字符串部分,在后续的替换中可以使用$1、$2等来引用这些部分。
Excel 正则表达式函数的应用
REGEXMATCH 的使用
首先,我们来看一下 REGEXMATCH 函数的使用。该函数用于判断某个字符串是否符合某个正则表达式,语法为 REGEXMATCH(text, regular_expression)。以下是一个简单的例子:
=REGEXMATCH("abcd", "ab.")
在这个例子中,第一个参数是字符串 "abcd",第二个参数是正则表达式 "ab."。我们知道,点 . 在正则表达式中表示匹配除了换行符以外的任意一个字符,因此 "ab." 可以匹配 "abc"、"abd"、"abe" 等。因此,该函数返回值为 TRUE。
当然,如果第一个参数不满足正则表达式要求,函数将会返回 FALSE。例如:
=REGEXMATCH("123", "[a-z]")
在这个例子中,正则表达式 [a-z] 要求只能匹配小写字母,因此字符串 "123" 不符合要求,函数返回值为 FALSE。
我们还可以使用 REGEXMATCH 函数来筛选匹配指定条件的数据。例如,我们有以下数据:
| 姓名 | 电话 |
|---|---|
| 小明 | 18512345678 |
| 小红 | 18687654321 |
| 小刚 | 13288888888 |
| 小智 | 13399998888 |
我们想要筛选出电话号码中包含 "88" 的数据,可以使用以下公式:
=FILTER(A2:B5, REGEXMATCH(B2:B5, "88"))
这个公式的含义是,从 A2:B5 的数据中筛选出那些电话号码中包含 "88" 的数据。结果如下:
| 姓名 | 电话 |
|---|---|
| 小红 | 18687654321 |
| 小刚 | 13288888888 |
| 小智 | 13399998888 |
REGEXREPLACE 的使用
接下来,我们来看一下 REGEXREPLACE 函数的使用。该函数用于查找并替换某个字符串中符合某个正则表达式的部分,语法为 REGEXREPLACE(text, regular_expression, replacement)。以下是一个简单的例子:
=REGEXREPLACE("12.34.56.78", "\.", "-")
在这个例子中,第一个参数是字符串 "12.34.56.78",第二个参数是正则表达式 "\.",它表示匹配一个 . 字符,因为点在正则表达式中有特殊含义,所以需要使用 \ 进行转义。第三个参数是 -,表示将匹配到的 . 字符替换成 -。因此,该函数的返回值为 "12-34-56-78"。
除了替换单个字符之外,我们还可以通过指定 $1、$2 等来获取匹配到的字符串的某个部分,并用这些部分来构成新的字符串。以下是一个例子:
=REGEXREPLACE("USA, China, Japan", "(.*)(,)(.*)(,)(.*)", "5234$1")
在这个例子中,我们想要将字符串 "USA, China, Japan" 的第一个单词(即 "USA")放到最后。我们可以使用括号 () 来将整个字符串划分成多个部分。括号中的 .* 表示匹配任意数量的任意字符,, 表示匹配一个逗号。最后,我们使用 $5、$2、$3、$4、$1 来指定每个部分的顺序,从而得到新的字符串 "China, Japan, USA"。
REGEXEXTRACT 的使用
最后,我们来看一下 REGEXEXTRACT 函数的使用。该函数用于从某个字符串中提取出符合某个正则表达式的部分,语法为 REGEXMATCH(text, regular_expression)。以下是一个简单的例子:
=REGEXEXTRACT("abc123de45FG", "\d+")
在这个例子中,我们想要提取字符串 "abc123de45FG" 中的数字部分。我们可以使用正则表达式 \d+,表示匹配一个或多个数字字符。因此,该函数的返回值为 "123"。
我们还可以使用括号 () 指定需要提取的部分。例如:
=REGEXEXTRACT("https://www.google.com/search?q=excel", "q=(\w+)")
在这个例子中,我们想要提取网址 "https://www.google.com/search?q=excel" 中的搜索关键字 "excel"。我们可以使用正则表达式 q=(\w+),其中 (\w+) 表示匹配一个或多个由字母、数字或下划线组成的字符。最后使用 $1 指定括号中的部分,函数的返回值为 "excel"。
结论
Excel 正则表达式函数可以帮助我们更快更准地处理数据。在使用时,我们需要了解正则表达式的语法和一些特殊符号的含义。通过 REGEXMATCH、REGEXREPLACE 和 REGEXEXTRACT 等函数的组合使用,我们可以轻松地实现对数据的筛选、搜索和替换等操作。
极客笔记