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。