VBA RegEx |如何在VBA Excel中使用正则表达式? (例子)

什么是Excel VBA中的RegEx?

正则表达式代表“正则表达式在VBA Excel中是“”,是一系列字符,用于定义用于在值字符串中查找特定字符模式的搜索模式。用一个简单的词“我们可以创建一个正则表达式模式并用它来搜索该模式的字符串”。

VBA RegEx是一个对象模型。我知道通过看一下解释是令人生畏的,但事实是物体的性质。这里需要记住的一件事是VBA RegEx(正则表达式)是一个文本函数对象,就像我们的其他文本函数“ LEFT,RIGHT,MID”一样。

如何在Excel VBA中启用RegEx?

正如我告诉VBA一样,RegEx是VBA中的对象模型,就像我们的外部软件(如“ MS Word”和“ MS PowerPoint”)一样。同样,RegEx也是我们需要在VBA编辑器中引用的组件对象模型(COM)。要启用RegEx,请按照以下步骤操作。

步骤1: 转到Visual Basic编辑器(Alt + F11)

第2步: 转到工具和参考。

第三步: 现在,您将看到对VBA项目的引用。向下滚动并选择“ Microsoft VBScript正则表达式5.5”

第4步: 现在单击确定。我们现在可以用VBA编码访问此RegEx对象。

例子 - 现在,我将向您展示一个简单的示例。假设您有“ Sales 2019,Sales 2018和Sales 2017”一词。如果您将模式定义为[0 – 7],则它将匹配0到7之间的所有数字,因此我们在每个字符串中的匹配将分别为201、201和2017。

VBA RegEx模式

VBA RegEx函数的模式看起来令人生畏,并且需要一些时间来理解该模式。我们可以看到两种字符序列,其中一种是“文字字符”,另一种是“元字符”。

  • 文字字符 搜索提供的字符串的完全匹配。例如,文字字符序列“ EFG”仅在提供的文本中查找“ EFG”的所有匹配项。
  • 元字符 只不过是RegEx模式中具有确切含义的字符的组合。这与 文字字符。 这是一个非常大的话题,下面是一些重要的语法。
句法描述例子比赛范例
.它匹配输入字符串的任何单个字符宠物。锅,放,模式
[]它与输入字符串的括号之间的任何单个字符匹配[pt]它匹配p或t
[^]它匹配任何单个字符,而不是输入字符串的括号之间[^ pt]它既不匹配p也不匹配t
[最后]它匹配括号中提供的范围内的任何字符[0-9]匹配0到9之间的任何数字
[a-z]它匹配从a到z的任何小写字符
[A-Z]它匹配从A到Z的任何大写字符
\ s它与任何空格字符匹配匹配空格,换行或制表符
\ S它与任何非空格字符匹配匹配字符不是空格,不是换行符或不是制表符
\ d它与任何一位数字字符匹配SE 5 VG 6匹配5和6
\ D它与任何单个非数字字符匹配SE 5 VG 6符合SEVG

RegEx对象的属性和方法

像我们所有的对象模型一样,RegEx也具有自己的属性和方法。现在,我们将详细一一介绍。

VBA正则表达式对象的属性

  • 图案: 这用于匹配提供的字符串。
  • 忽略大小写: 这将忽略大写和小写字符。
  • 全球的: 如果要查找模式中的所有匹配项,则TRUE为参数,否则将找到第一个匹配项。
  • 多行: 如果您希望找到新的换行符,可以使用它。

RegEx对象的方法

  • 测试: 这是为了测试是否可以在提供的字符串中找到该模式。如果找到则返回TRUE,否则返回FALSE。
  • 执行: 这将返回该模式与查找字符串的所有匹配项。
  • 代替: 这会将搜索字符串替换为新字符串。

VBA Excel中RegEx的示例

现在看下面的示例VBA代码。

您可以在此处下载此VBA RegEx Excel模板– VBA RegEx Excel模板

代码:

 Sub RegEx_Example()Dim RegEx作为对象,MyString作为字符串设置RegEx = CreateObject(“ VBScript.RegExp”)与RegEx .Pattern =“ [0-9] +”结尾于MyString =“出生日期是1985年” MsgBox RegEx .Test(MyString)MyString =“出生日期是????” MsgBox RegEx.Test(MyString)结束子 

普通的

在上面的代码中,我们将模式设置为从0到9搜索数字,如下所示。

 使用RegEx .Pattern =“ [0-9] +”结尾为 

然后变量MyString =“出生日期是1985年”,该变量的值介于0到9之间,因此我们的消息框将返回TRUE。

MyString =“出生日期是???”没有0到9之间的任何数字,因此在出现消息框时会返回FALSE。