Microsoft Excel 中的 Regex 公式2025年3月17日 | 阅读 12 分钟 众所周知,正则表达式在开发者领域无处不在,因为它们用于验证各种网站输入,以及在文本中的大字符串中搜索不同类型的单词模式,以及用于许多其他用途。 而在 Microsoft Excel 中,正则表达式(VBA RegEx 或简称 VBA Regex)并未得到太多宣传,在实际应用中也不那么流行,因为大多数用户都擅长使用简单的LEFT、RIGHT、MID以及FIND函数来处理他们的字符串。 在本教程中,我们将讨论 Microsoft Excel 中使用的不同概念,它们如下:
您如何理解 Microsoft Excel 中的 Regex 这个词?在 Microsoft Excel 中,正则表达式(又称regex或regexp)是主要定义搜索模式的特殊编码字符序列。通过使用该模式,我们可以有效地在给定字符串中查找匹配的字符组合,或验证数据输入。 而正则表达式主要有自己的语法,包括独特的字符、运算符以及结构。
正则表达式主要用于各种编程语言,包括 Visual Basic for Applications (VBA) 和 JavaScript。后者有一个独特的 RegExp 对象,可以用来创建自定义函数以满足需求。 Microsoft Excel 中是否存在 Regex 函数? 对上述问题的回答是:遗憾的是,Microsoft Excel 中不存在内置的 Regex 函数。如果有人想在他们的公式中使用正则表达式,那么他们需要创建用户定义的函数(基于 VBA 或 .NET),或者他们可以安装通常支持正则表达式的第三方工具。 Microsoft Excel 中的 Regex 备忘单是什么?我们都知道,无论给定的正则表达式模式是简单还是非常复杂,它都是用通用语法构建的。我们提供了一个主要 Regex 模式的快速参考,将帮助个人掌握基础知识。在进一步学习示例时,它也可以作为我们的备忘单; 如果我们熟悉正则表达式,我们可以直接跳转到 RegExp 函数。 字符 Microsoft Excel 使用这些最常用的模式来匹配特定字符。
字符类 通过这些模式,我们可以轻松地匹配 Excel 工作表中不同字符集的各种元素。
量词 在 Microsoft Excel 中,量词被认为是特殊的表达式,它们负责指定要匹配的字符总数;它应该分别应用于它之前的字符。
Grouping 在 Microsoft Excel 中,分组构造主要用于从给定的源字符串中捕获子字符串,以便我们可以有效地对其执行某些操作。
锚点 在 Microsoft Excel 中,锚点指定输入字符串中需要查找匹配的位置。
交替(OR)构造 在 Microsoft Excel 中,交替操作数启用 OR 逻辑,以便我们可以有效地匹配此元素或该元素。
环视构造 当我们需要匹配后面或前面有其他东西(或没有)的项时,Excel 中的环视构造非常有用。这些表达式有时被称为“零宽度断言”,因为它们有效地匹配一个位置而不是实际字符。 注意。在 Visual Basic for Application (VBA) RegEx 风格中,不支持后行断言。
您如何理解 Microsoft Excel 中的自定义 Regex 函数?根据以上内容,我们已经知道 Microsoft Excel 没有内置的 RegEx 函数,因此为了启用正则表达式,我们需要创建三个自定义 VBA(Visual Basic for Application)函数(也称为用户定义函数)。 VBA RegExp 函数在 Excel 中如何工作? 现在在本节中,我们将讨论内部机制以及后端到底发生了什么。 因此,当我们开始在 VBA(Visual Basic for Application)中使用正则表达式时,我们可以激活 RegEx 对象库引用,或者有效地使用 CreateObject 函数。 RegExp 对象封装了 4 个属性,它们如下:
# 示例:Microsoft Excel VBA Regex 现在在这个例子中,我们将检查提到的模式是否存在于给定的文本中,借助 RegEx.Test。 我们将按照以下步骤来使用 VBA RegEx。 步骤 1:我们需要定义一个新的子程序来创建宏。 代码 ![]() 步骤 2:之后,我们将使用 RegEx 定义两个变量作为对象,它们可以用于创建 RegEx 对象和字符串 Str。 代码 ![]() 步骤 3:在此步骤中,我们将使用 CreateObject 函数创建我们的 RegEx 对象。 代码 ![]() 步骤 4:现在,我们将添加要用 RegEx 函数测试的模式。 代码 ![]() 步骤 5:之后,我们将定义需要在此其中有效检查给定模式的字符串。 代码 ![]() 步骤 6:然后我们将使用 RegEx.Test 来测试给定模式是否在名为 str 的变量中,并进行调试。 代码 ![]() 步骤 7:之后,我们将按 F5 或从键盘上按下 Run 按钮来运行代码以获得输出。 您如何理解 Microsoft Excel 中的 Regex 匹配函数?众所周知,*RegExpMatch* 函数用于搜索输入字符串中与正则表达式匹配的给定文本,如果找到匹配项,则返回“TRUE”。否则,它将返回“FALSE”。 语法 其中:
# 示例:如何使用正则表达式匹配给定的字符串 在给定的数据集中,我们将假设我们要识别相应的包含 SKU 代码的条目。 并且可以看出,每个 SKU 都以 2 个大写字母开头,后跟一个连字符和 4 位数字,因此我们可以使用以下表达式来匹配它们。 其中
现在使用上面建立的模式,我们将开始像往常一样输入公式,并且respective 函数的名称将出现在 Excel 的 AutoComplete 有效建议的列表中。 ![]() 假设原始字符串位于 A5,则公式如下: 为了方便起见,我们可以将给定的正则表达式输入到一个单独的单元格中,并为 *pattern* 参数使用绝对引用($A$2),因为这确保了当我们将公式复制到其他单元格时,给定的单元格地址将保持不变。 为了显示我们的文本标签而不是显示 TRUE 和 FALSE,请将 RegExpMatch 嵌套在 IF 函数中,并在 *value_if_true* 和 *value_if_false* 参数中指定所需的文本。 ![]() Microsoft Excel 中的 Regex 提取函数是什么意思?Microsoft Excel 中的 RegExpExtract 函数搜索与正则表达式匹配的子字符串,然后提取所有匹配项或特定匹配项。 公式 其中,
# 示例:如何使用正则表达式提取字符串 在此示例中,我们讨论如何提取发票号码,为此我们将使用简单的 regex 函数来匹配任何 7 位数字。 现在我们将把模式放在 A2 单元格中,我们将用这个简洁易懂的公式来完成工作。 如果模式匹配,则公式将提取发票号码;如果未找到匹配项,则返回空。 ![]() Microsoft Excel 中的 Regex 替换函数是什么意思?Microsoft Excel 中的 *RegExpReplace* 函数主要用于将与 regex 匹配的值替换为我们指定的文本。 其中
# 示例:如何使用 regex 替换或删除给定的字符串 我们都知道,我们的一些记录通常包含信用卡号,这是非常机密的。我们可以将其替换为其他内容或完全删除,这两个任务都可以通过*RegExpReplace* 函数来实现。 如何?在第二种情况下,我们将被替换为空字符串。 在我们的示例表中,所有卡号都有 16 位数字,分为 4 组,并用空格分隔,因此要找到它们;我们将通过正则表达式来模拟模式。 对于替换,可以使用以下字符串。 并且这是一个完整的公式,我们可以使用它来**替换**信用卡号,借助不敏感的信息。 此外,由于存在于单独的单元格 A2 和 B2 中的 regex 和替换文本,该公式同样有效。 ![]() 在 Microsoft Excel 中,“删除”是“替换”的一个特例,为了**删除**信用卡号,我们可以将空字符串("")用于*replacement*参数。 ![]() |
我们请求您订阅我们的新闻通讯以获取最新更新。