前言:
此刻同学们对“vb按行读取文本”大致比较关心,同学们都需要剖析一些“vb按行读取文本”的相关资讯。那么小编同时在网上收集了一些关于“vb按行读取文本””的相关资讯,希望你们能喜欢,看官们一起来学习一下吧!正则表达式的创建和字典一样具有同样的方法
1、通过VBE工具菜单引用Microsoft VBScript Regular Expressions 5.5类库,然后直接定义对象:Dim reg As New RegExp
2、使用CreateObject方法定义对象:CreateObject("VBSCRIPT.REGEXP")
RegExp对象的属性:
Global - true为全部匹配,false为只匹配第一个符合的
Multiline - 搜索字符串分布在多行,这个属性是要设置为True的。
IgnoreCase - true不区分大小写,false区分大小写
Pattern - 设置正则表达式模式
RegExp对象的方法:
Execute - 对指定的字符串执行正则表达式搜索
Replace - 替换在正则表达式查找中找到的文本。
Test - 对指定的字符串执行一个正则表达式搜索,true为找到,false为没找到
MatchCollection对象与Match对象
Count:匹配到的对象的数目
Item:通过索引值获取指定的元素。
Match对象(单个结果)有以下几个只读的属性:
FirstIndex - 匹配字符串在整个字符串中的位置,值从0开始。
Length - 匹配字符串的长度。
Value - 匹配的字符串。
SubMatches - 集合,匹配字符串中每个分组的值。作为集合类型,有Count和Item两个属性
正则规则千千万 就看你想咋匹配,弄清楚以下元字符含义,正则规则就靠它们了
[0-9]表示匹配任意一个数字
[a-zA-Z]表示匹配任意一个英文字母
[\u4e00-\u9fa5]表示匹配任意一个中文字符
代码 说明
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
代码/语法 说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
代码/语法 说明
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符
表达式 可匹配
[ab5@] 匹配 "a" 或 "b" 或 "5" 或 "@"
[^abc] 匹配 "a","b","c" 之外的任意一个字符
[f-k] 匹配 "f"~"k" 之间的任意一个字母
[^A-F0-3] 匹配 "A"~"F","0"~"3" 之外的任意一个字符
| 左右两边表达式之间 "或" 关系,匹配左边或者右边
( ) (1). 在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰
(2). 取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到
正则表达式实例:
Sub Reg1()
'定义正则表达式对象
Dim oR1 As Object
'定义匹配字符串集合对象
Dim oM As Object
'创建正则表达式
'定义要执行正则查找的文本变量
Dim sT As String
sT = "关注a咕吧b课堂c"
Set oR1 = CreateObject("vbscript.regexp")
With oR1
'设置是否匹配所有的符合项,True表示匹配所有, False表示仅匹配第一个符合项
.Global = True
'设置是否区分大小写,True表示不区分大小写, False表示区分大小写
.IgnoreCase = True
'设置要查找的字符模式
.Pattern = "[\u4e00-\u9fa5]+"
'判断是否可以找到匹配的字符,若可以则返回True
MsgBox .Test(sT)
'对字符串执行正则查找,返回所有的查找值的集合,若未找到,则为空
Set oM = .Execute(sT)
'把字符串中用正则找到的所有匹配字符替换为其它字符
MsgBox .Replace(sT, "")
End With
Set oR = Nothing
Set oM = Nothing
End Sub
当然你也可以编成自定义函数 在工作表应用 把sT编成形参
Function rega(sT as string)
Dim oR1 As Object
'定义匹配字符串集合对象
Dim oM As Object
'创建正则表达式
Set oR1 = CreateObject("vbscript.regexp")
With oR1
'设置是否匹配所有的符合项,True表示匹配所有, False表示仅匹配第一个符合项
.Global = True
'设置是否区分大小写,True表示不区分大小写, False表示区分大小写
.IgnoreCase = True
'设置要查找的字符模式
.Pattern = "[\u4e00-\u9fa5]+"
'对字符串执行正则查找,返回所有的查找值的集合,若未找到,则为空
Set oM = .Execute(sT)
'把字符串中用正则找到的所有匹配字符替换为其它字符
rega= .Replace(sT, "")
End With
Set oR1 = Nothing '把对象置空
Set oM = Nothing
End Function
如何提取匹配的结果?当匹配的结果有多个时
1、用 for each ……in……的方式提取
dim mh as match' as match也可以省略 而把mh声明为变量型
Set mm = reg.Execute(str)
For Each mh In mm
Debug.Print mh.value
Next
匹配结果是一个集合可以用count方法计元素个数,用item方法索引某个元素值
mm.count '结果计数
mm.item(0)'第一个结果,item也是可以省略的而直接写成mm(0)
2、用for……to……方式提取结果
Set mm = reg.Execute(str)
For i=0 to mm.count-1
Debug.print mm(i).value
Next i
关注咕吧课堂
下期精彩继续!
标签: #vb按行读取文本 #vba正则表达式实例 #正则表达式 vb #vb编程数学计算表达式 #vb表达式的值