- 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 的正则表达式:
您可能关注的文档
- C语言花朵代码.docx
- c语言花朵分析和总结.docx
- c语言绘制玫瑰花.docx
- C语言基础知识练习题.docx
- C语言精华练习题.docx
- C语言课程设计飞机订票系统源代码.docx
- C语言课程设计实验报告汽车租赁管理系统.docx
- C语言课程设计校园卡管理系统.docx
- c语言蓝信杯分析和总结.docx
- C语言逻辑推理例题.docx
- 2026河南洛阳洛龙区安乐镇卫生院招聘2人备考题库附答案详解(轻巧夺冠).docx
- 中山大学《大学物理l》2018-2019学年第一学期期末试卷(物理学院).pdf
- 2026河南洛阳洛龙区安乐镇卫生院招聘2人备考题库附答案详解(模拟题).docx
- 2026河南洛阳洛龙区安乐镇卫生院招聘2人备考题库附答案详解(实用).docx
- 2026河南洛阳洛龙区安乐镇卫生院招聘2人备考题库附答案详解(巩固).docx
- 2026河南洛阳洛龙区安乐镇卫生院招聘2人备考题库附答案详解(满分必刷).docx
- 2026河南洛阳洛龙区安乐镇卫生院招聘2人备考题库附答案详解(完整版).docx
- 电商平台运营管理与优化培训教程及实战题目.docx
- 高效课堂课题研究.docx
- 2026河南洛阳洛龙区安乐镇卫生院招聘2人备考题库附答案详解(夺分金卷).docx
原创力文档

文档评论(0)