ECEL VBA 正则表达式 从实例开始.docxVIP

  • 2
  • 0
  • 约2.08万字
  • 约 24页
  • 2023-05-12 发布于上海
  • 举报
EXCEL VBA 正则表达式 从实例开始 所有代码都测试过 [2011-09-09:[2010-08-08:数据验证经常出现的情况是,需要验证和处理大量的文本内容, 有时候需要查找字符串,有时候要按条件替换,并且这些待处理的问题还是有一定的规律可 循的,但是无法通过枚举的方式挨个验证,这个时候就需要正则表达式来帮忙。 1.正则表达式(Regular Expression)基础 正则表达式是通用的文本搜索和处理方案,它的知识不是 VBA 独有的,基本上每种语言都内置了正则表达式的功能。正则表达式的基础知识不是这里的重点,需要的朋友可以Google 一下,或者参看下面的一些入门教程: tutorials/regex/ 中的正则表达式应用 在 VBA 中使用正则表达式,可以通过下列途径实现: 《 创建正则表达式对象: 前期绑定:在 VBA 代码编辑器中的Tools菜单中,选中References...,然后引用 Microsoft VBScript Regular Expressions 类库,然后直接定义对象:Dim reg As New RegExp。 后期绑定:使用 CreateObject 方法定义对象:CreateObject()。前一种方式的优点是可以有编辑器的Intellisense 支持 RegExp 对象的属性: Global - 设置或返回一个 Boolean 值,该值指明在整个搜索字符串时模式是全部匹配还是只匹配第一个。如果搜索应用于整个字符串, Global 属性的值应该为 True,否则其值为False。默认的设置为 True。 Multiline - 返回正则表达式是否具有标志 m, 缺省值为 False。如果指定的搜索字符串分布在多行,这个属性是要设置为 True 的。 IgnoreCase - 设置或返回一个 Boolean 值,指明模式搜索是否区分大小写。如果搜索是区分大小写的,则 IgnoreCase 属性应该为 False;否则应该设为 True。缺省值为 True。 Pattern - 设置或返回被搜索的正则表达式模式。 被搜索的正则字符串表达式。它包含各种正则表达式字符。 RegExp 对象的方法: ; Execute - 对指定的字符串执行正则表达式搜索。需要传入要在其上执行正则表达式的文本字符串。正则表达式搜索的设计模式是通过 RegExp 对象的 Pattern 来设置的。Execute 方法返回一个 Matches 集合,其中包含了在 string 中找到的每一个匹配的 Match 对 象。如果未找到匹配,Execute 将返回空的 Matches 集合。 Replace -替换在正则表达式查找中找到的文本 Test - 对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。属性对Test 方法没有影响。如果找到了匹配的模式,Test 方法返回 True;否则返回 False。 MatchCollection 对象与 Match 对象 匹配到的所有对象放在 MatchCollection 集合中,这个集合对象只有两个只读属性: Count: 匹配到的对象的数目 Item:集合的又一通用方法,需要传入 Index 值获取指定的元素。 一般,可以使用 For Each 语句枚举集合中的对象。集合中对象的类型是Match。Match 对象有以下几个只读的属性: FirstIndex - 匹配字符串在整个字符串中的位置,值从0 开始。 Length -匹配字符串的长度Value -匹配的字符串 SubMatches - 集合,匹配字符串中每个分组的值。作为集合类型,有Count 和 Item 两个属性。 常用的正则表达式主要有以下几种: 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符 (包括汉字在内): [^\x00-\xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII 字符计 1) 匹配空白行的正则表达式:\n\s*\r ~ 评注: 可以用来删除空白行 匹配 HTML 标记的正则表达式:(\S*)[^]*.*/|.* / 评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力 匹配首尾空白字符的正则表达式:^\s*|\s*$ 评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式 匹配 Email 地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 评注: 表单验证时很实用 匹配网址 URL 的正则表达式:

文档评论(0)

1亿VIP精品文档

相关文档