EXCEL VBA学习笔记:正则表达式(二)表达式语句写法

EXCEL VBA学习笔记:正则表达式(二)表达式语句写法正则表达式也分前期绑定与后期绑定。前期绑定:“工具”—>“引用” 选项,然后在“引用”对话框中选中“Microsoft VBScript

大家好,欢迎来到IT知识分享网。

正则表达式也分前期绑定与后期绑定。前期绑定:“工具”—>“引用” 选项,然后在“引用”对话框中选中“Microsoft VBScript Regular Expressions 5.5”前的复选框,然后单击“确定”。使用时将一个变量声明为正则对象类型:Dim reg As New RegExp。

后期绑定:通过CreateObject方法创建一个正则 对象:Set reg = CreateObject(“vbscript.Regexp”)

EXCEL VBA学习笔记:正则表达式(二)表达式语句写法

示例取出价格数字:

Set reg = CreateObject("vbscript.Regexp") '创建正则对象 With reg .Global = True '设置对象的Global属性 .Pattern = "\d+\.?\d?" '设置对象的pattern属性 For Each rn In Range("A1", [A1].End(xlDown)) rn.Offset(0, 1) = .Execute(rn)(0) Next End With

pattern属性:编制的正则表达式,以字符串的形式赋值给pattern属性。要用英文双引号将正则表达式包围起来。

Global 属性:当值为False时,只要在目标文本中,找到一个匹配时,即停止搜索。如果想要找出目标文本中的所有匹配,那么需要把它设置为True。

还有IgnoreCase 属性,设置对英文字母大小写是否敏感。默认值False,对大小写敏感;设置为True,忽略大小写。 MultiLine属性,它影响且只影响元字符^和$的意义。值为False,无论目标文本是多少行,整个文本中则只有一个开始位置,^表示第一行的开始;只有一个行结束位置,$表示文本末尾位置。值为True,那么,^和$分别表示每一行的行首和行尾位置。

Execute方法: 在目标文本中执行正则表达式搜索。

语法:set xe=object.execute(Text);其中xe是用户自定的对象变量,Text为目标文本,object是正则对象,本示例中就reg ,用With后省略书写了。

Execute方法会作用于目标文本(Text),并返回一个叫作”Matches”的集合对象,在这里就是“xe”。因为匹配成功可能不止一次。(如上面的示例,如果数据都放在一个单元格中,就会匹配到3次数字)。在这个集合对象中包含正则找到的所有叫做”Match”的成功匹配对象。如果未找到匹配,Execute 将返回空的 Matches 集合。Matches集合有两个只读属性:索引(Item)和成功匹配的次数(Count)

EXCEL VBA学习笔记:正则表达式(二)表达式语句写法

Matches集合中的一个Item就是一个Match对象。Matches集合中所包含的匹配对象Match有四个只读属性:Value、firstindex、length、submatches。

Execute(rn)(0) 表示的是第1个匹配对象Match值,Match的索引序数从0起,虽然在”本地窗口”中显示的是Item 1。如果用set t = .Execute(rn)(0),t 就Match(0)对象。set t = xe(0),跟前面一样的意思。示例中只需用Match对象的value属性,简写为=.Execute(rn)(0),如果还需用到其它属性,可以如将找到的数字标成红色,就需要用firstindex、length,就得取Match对象。

EXCEL VBA学习笔记:正则表达式(二)表达式语句写法

Match对象的Submatches属性:匹配对象match的Submatches是一个集合属性,它包含正则表达式中用小括号捕捉到的所有子匹配。集合Submatches有两个固有属性:Count和Item。可以通过Item得到集合中的每个值,它实际就是在正则表达式中用小括号捕获的内容;Count值是集合中元素个数,实际上就是正则表达式中小括号的个数。

EXCEL VBA学习笔记:正则表达式(二)表达式语句写法

左图的Submatches即为右图的匹配组。.pattern 中有两个小括号,即产生Submatches中2个Item,为Submatches(0)与Submatches(1)。匹配到了9条记录,即Match对象有9个,每个Match对象有1个Submatches,每个Submatches中有 2条数据。

附注:正则表达式取出的数据都是字符,回到开始示例,取出的数字需要转换一下,才成为数值型。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/76363.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信