-
vba正则表达式
2018-11-28 17:24:46vba正则表达式学习文档,涵盖详细的正则语法说明、有具体的功能例子,可做文档查询或实例参考。 -
vba 正则表达式_VBA正则表达式之“或”
2020-12-14 16:46:14前面一节中我们讲过在正则表达式中 a|b 表示匹配a或者是b,同样 [ab]也表示匹配a或者b,而非匹配ab。[0-9]表示匹配0-9中任意一个数字,[234]表示匹配2或者是3或者是4,而非匹配234。也就是说表达或的关系 可以用“|...我的目标:让中国的大学生走出校门的那一刻就已经具备这些Office技能,让职场人士能高效使用Office为其服务。支持鹏哥,也为自己加油!
前面一节中我们讲过在正则表达式中 a|b 表示匹配a或者是b,同样 [ab]
也表示匹配a或者b,而非匹配ab。
[0-9]表示匹配0-9中任意一个数字,[234]表示匹配2或者是3或者是4,而非匹配234。
也就是说表达或的关系 可以用“|”,也可以用[]。
下面我们看下具体的例子:
要求:左边单元格中的数据以空格区分,希望根据空格拆分到右边的单元格。
代码:
Sub 拆分()Dim regx As Object, rng As Range, mat, m, n%Set regx = CreateObject("vbscript.regexp")With regx.Global = True.Pattern = "[0-9]+"For Each rng In [a1:a6] Set mat = .Execute(rng) For Each m In mat n = n + 1 Cells(rng.Row, n + 1) = m Next n = 0NextEnd WithEnd Sub
.Pattern = "[0-9]+"表示匹配0-9的之间的任意一个数字,“+”号表示匹配数字一次或者是多次,这样就把每个以空格分割开的数字全匹配出来了。
当然我们也可以写成 .Pattern = "\d+"。
[0-9a-zA-z]表示从0-9任意数字、a到z任意字母,或者A到Z任意字母。
本节的分享就到这里,鹏哥祝大家每天都有进步。
加入米宏Office培训群,每天进步一点点!
从基础操作到VBA,
两杯咖啡的钱,
换取一份如此详细的Excel视频资料,
你还在犹豫?
欲购从速,联系微信号:527240310
非诚勿扰!
每天进步一点,每天提升一点!
-
vba 正则表达式_再谈VBA正则表达式中MatchCollection对象!
2020-12-14 16:46:14昨天我们已经讲过了正则表达式中分组和不分组的情况下匹配的结果的区别,今天我们再来剖析下分组后的执行结果MatchCollection对象。还是昨天的案例:我们看下本地窗口:mat对象集合有count、item、value三个属性。...我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务。支持我,也为自己加油!
昨天我们已经讲过了正则表达式中分组和不分组的情况下匹配的结果的区别,今天我们再来剖析下分组后的执行结果MatchCollection对象。
还是昨天的案例:
我们看下本地窗口:
mat对象集合有count、item、value三个属性。
同样,SubMatche集合也有count、item、value三个属性,就像父子关系一样,SubMatche是mat的儿子。
这些属性都是可以利用的。
代码如下:
Sub 提取3()
Dim regx As Object, mat, m, n%
Set regx = CreateObject("vbscript.regexp")
With regx
.Global = True
.Pattern = "(\d+)\.?([一-龢]+)"
Set mat = .Execute([a1])
For n = 0 To mat.Count - 1
Cells(n + 3, 2) = mat(n).submatches(0)
Cells(n + 3, 3) = mat(n).submatches(1)
Next
End With
End Sub
红色部分的含义:直接执行完正则表达式后,mat.count表示匹配成功的条数,所以直接利用一个循环,从0循环到mat.count-1就可以把所有匹配到的内容循环出来,每循环一次就循环出一个item,mat(0)代表mat下面的第一个item,然后mat(n).submatches(0)就表示mat中第一个条目下,submatches中的第一个item的值。
大家可以通过对比图片和代码来理解。
通过本节我们对分组又有了更深的了解。
本节的分享就到这里,鹏哥祝大家每天都有进步。聚米为谷
博学宏才
如果对VBA感兴趣
手机端请扫描
电脑端请登录
www.mihong.top
找到《带你走进VBA的世界》
跟着我一步步学习VBA
本节的分享就到这里,鹏哥祝大家每天都有进步。您点的每个赞,我都认真当成了喜欢
-
vba 正则表达式_VBA中正则表达式的基础用法
2020-12-14 16:31:08了解了正则表达式的基本概念及用途之后,我们就来学习下具体的用法,先以一个简单的例子来了解下正则到底是怎么用的。案例:比如,A1单元格中有一串字符:aabbccddaabbcc,我们要把其中的a找到,然后替换成o。代码...我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务。支持我,也为自己加油!
了解了正则表达式的基本概念及用途之后,我们就来学习下具体的用法,先以一个简单的例子来了解下正则到底是怎么用的。
案例:
比如,A1单元格中有一串字符:aabbccddaabbcc,我们要把其中的a找到,然后替换成o。
代码如下:
Sub test()
Dim regx As Object, t$, k, s, n
t = "aabbccddaabbcc"
Set regx = CreateObject("vbscript.regexp")'引用正则表达式
regx.Global = True '查找范围,True表示全部查找,False表示只查找第一个,默认值是False。
regx.Pattern = "a" '引号里书写正则表达式,这里要查找a,就直接写个a
Set k = regx.Execute(t) 'Execute方法的结果即k为一个对象,返回匹配成功的结果。
For Each s In k '在k中循环可以得到该k中的每个元素。
MsgBox s
Next
n = regx.Replace(t, "o") '将匹配成功的结果做替换
MsgBox n
End Sub
上面的代码后面都有注释,首先要引用正则表达式,前期绑定也可以,直接创建也可以,然后要对regexp的两个属性做出指定,接下来就可以利用正则的方法和属性来实现一些效果了。
Global属性,指查找范围,True为全部查找,False只查找第一个,如果上面案例中其属性改为false,那么只会在该字符串中查找第一个a。
Pattern属性,指的是正则表达式。
下面讲下正则表达式的两个方法:
Execute方法,返回匹配成功的结果,是一个对象,通过for-each 可以循环其中的值。
Replace方法,将匹配的结果做替换,regx.Replace(t, "o"),t为原字符串,第二个参数为要替换为的结果。
普通字符的替换:
了解了基础的语法之后,我们来看下如何用正则对普通的字符做替换。
如上例中,把A列部门中的门字去掉。
思路:
对A列部门循环,循环出来的值用正则表达式匹配“门”字,并把匹配的结果替换成空。
代码如下:
Sub test1()
Dim regx As Object, rng1 As Range
Set regx = CreateObject("vbscript.regexp")
With regx
.Global = True
.Pattern = "门"
End With
For Each rng1 In Range("a2:a11")
rng1(1, 2).Value = regx.Replace(rng1.Value, "")
Next
End Sub
这里注意regexp的两个属性可以用with语法来书写,这样显得简洁明了。当然这节课我们只是对正则表达的基础语法做了个了解,正则表达式真正的魅力在Pattern = "……",引号中的表达式,后面的课程中我们会体会到它的强大之处。
本节的分享就到这里,鹏哥祝大家每天都有进步。聚米为谷
博学宏才
如果对VBA感兴趣
手机端请扫描
电脑端请登录
www.mihong.top
找到《带你走进VBA的世界》
跟着我一步步学习VBA
本节的分享就到这里,鹏哥祝大家每天都有进步。您点的每个赞,我都认真当成了喜欢
-
vba 正则表达式_VBA中正则表达式的基础语法
2020-12-14 16:46:14正则表达式的基本概念及用途了解之后,我们就来学习下具体的语法,先以一个简单的例子来了解。基础语法:比如,A1单元格中有一串字符:aabbccddaabbcc,我们要把其中的a找到,然后替换成o。代码如下:Sub test()Dim ...我的目标:让中国的大学生走出校门的那一刻就已经具备这些Office技能,让职场人士能高效使用Office为其服务。支持鹏哥,也为自己加油!
正则表达式的基本概念及用途了解之后,我们就来学习下具体的语法,先以一个简单的例子来了解。
基础语法:
比如,A1单元格中有一串字符:aabbccddaabbcc,我们要把其中的a找到,然后替换成o。
代码如下:
Sub test()
Dim regx As Object, t$, k, s, n
t = "aabbccddaabbcc"
Set regx = CreateObject("vbscript.regexp")'引用正则表达式
regx.Global = True '查找范围,true为全部查找,false只查找第一个,默认是false。
regx.Pattern = "a" '引号里书写正则表达式,这里要查找a,就直接写个a
Set k = regx.Execute(t) 'Execute方法的结果为一个对象,返回匹配成功的结果。
For Each s In k '通过循环K可以得到该对象中的每个元素。
MsgBox s
Next
n = regx.Replace(t, "o") '将匹配成功的结果做替换
MsgBox n
End Sub
上面的代码后面都有注释,首先要引用正则表达式,前期绑定也可以,直接创建也可以,然后要对regexp的两个属性做出指定。
Global属性,指查找范围,true为全部查找,false只查找第一个,如果上面案例中其属性改为false,那么只要该字符串中查找第一个a。
Pattern属性,指的是正则表达式。
下面讲下正则表达式的两个方法:
Execute方法,返回匹配成功的结果,是一个对象,通过for each 可以循环其中的值。
Replace方法,将匹配的结果做替换,regx.Replace(t, "o"),t为原字符串,第二个参数为要替换为的结果。
普通字符的替换:
了解了基础的语法之后,我们来看下如何用正则对普通的字符做替换。
如上例中,把A列部门中的门字去掉。
思路:
对A列部门循环,循环出来的值用正则表达式匹配门字,并把匹配的结果替换成空。
代码如下:
Sub test1()
Dim regx As Object, rng1 As Range
Set regx = CreateObject("vbscript.regexp")
With regx
.Global = True
.Pattern = "门"
End With
For Each rng1 In Range("a2:a11")
rng1(1, 2).Value = regx.Replace(rng1.Value, "")
Next
End Sub
这里注意regexp的两个属性可以用with语法来书写,这样显得简洁明了。当然这节课我们只是对正则表达的基础语法做了个了解,正则表达式真正的魅力在Pattern = "……",引号中的表达式,后面的课程中我们会体会到它的强大之处。
本节的分享就到这里,鹏哥祝大家每天都有进步。
加入米宏Office培训群,每天进步一点点!
从基础操作到VBA,
两杯咖啡的钱,
换取一份如此详细的Excel视频资料,
你还在犹豫?
欲购从速,联系微信号:527240310
每天进步一点,每天提升一点!
-
vba 正则表达式_VBA中正则表达式之量词
2020-12-14 16:46:14前面章节我们见识了正则表达式中元字符的强大,但有时候我们想要匹配的字符串有长度的要求,正则表达式中的量词就是专门为解决这个问题而生的。正则表达式中的量词如下:? 匹配前面的子表达式零次或一次。+ 匹配... -
vba 正则表达式_VBA中正则表达式分组后结果的利用
2020-12-14 16:46:14昨天我们已经讲过了正则表达式分组和不分组的情况下匹配的结果的区别,今天我们再对分组后的一些属性进行研究。还是昨天的案例:我们看下本地窗口:mat集合下面有count、item、value三个属性。同样,submatches集合... -
vba 正则表达式_VBA中正则表达式之元字符
2020-12-03 11:13:42我的目标:让中国的大学...上一节中我们讲过了正则表达式的基础语法,举了一个例子,把A列数据各个部门中的门字去掉,当时写的代码中有一段:Set regx = CreateObject("vbscript.regexp")With regx .Global = True ... -
vba 正则表达式_VBA之正则表达式(1) 基础篇
2020-12-14 16:46:14VBA中并没有直接提供正文表达式对象,需要借助VBScript的正则对象。如果使用前期绑定,那么就需要在VBE中引用如下扩展库:也可以使用后期绑定的方式创建正则对象,代码如下。Set objRegEx = CreateObject("vbscript.... -
vba 正则表达式_VBA中正则表达式与数组结合的应用案例
2020-12-14 16:46:14我的目标:让中国的大学生走出校门的那一刻就已经具备这些Office技能,让职场人士能高效使用Office为其服务。支持鹏哥,也为自己加油!我们来看看下面的案例:上图中要求把A列数据中学号和姓名拆分开来,通过前面几... -
vba replace函数_基础扩展 | 08. VBA正则表达式
2020-12-03 10:48:19VBA正则表达式的语法与其他语言(如Python)中使用的语法有较大的区别,主要是因为VBA的RegEx对象带有可选参数,因此有时必须指定这些参数以获得与在其他语言中使用标准的正则表达式语法相同的结果。VBA正则表达式语法... -
vba 正则表达式_VBA中正则表达式之首尾锚定
2020-12-14 16:46:16我的目标:让中国的大学生走出校门的那一刻就已经具备这些Office...在正则表达式中确定开始位置字符或者其类型要用脱字符“^”,确定结束位置字符或者其类型要用“$”。比如下面的例子:对A列数据进行筛选。一、以... -
vba 正则表达式_VBA中正则表达式与数组结合的应用案例!
2020-12-14 16:46:28我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务。支持我,也为自己加油!我们来看看下面的案例:上图中要求把A列数据中学号和姓名拆分开来,通过前面几节... -
VB/VBA 正则表达式的使用方法
2017-08-30 17:17:42VBA正则表达式使用Sub RegularTest() Dim s As String s = "12asd34" Dim myRegExp As Object Dim mMatches As Object Dim mMatch As Object sumValueInText = 0 Set mRegExp = CreateObject( -
vba 正则表达式_VBA中正则表达式之字符组
2020-12-03 11:44:34我的目标:让中国的大学生走出校门的那一刻就已经具备这些Office技能,让职场人士能高效使用Office为其服务。支持鹏哥,也为自己加油!先来看一个案例:如上图:序号和后面的标题写在了一起,有的序号是一位数字,有... -
excelvba正则表达式从实例开始.docx
2020-11-13 20:17:42EXCEL VBA 正则表达式 从实例开始 所有代码都测试过 ' ' '[2011-09-09 '[2010-08-08 ' 数据验证经常出现的情况是需要验证和处理大量的文本 内容 有时候需要查找字符串 有时候要按条件替换 并且这些待处理的问题还是... -
vba 正则表达式
2018-04-23 09:40:21群友分享的,内容解释非常清楚Sub RegTest() Dim oRegExp As Object '定义正则表达式对象 Dim oMatches As Object '定义匹配字符串集合对象 Dim str As String '定义要执行正则查找的文本变量 str = "... -
VBA 正则表达式
2013-11-20 22:50:10①正则表达式的概述 正则表达式原本是形式语言理论中的概念,与编译器的构造有密切的联系。但是作为一个应用软件的用户,我们没有必要去细究正则表达式的严格定义和处理方法。本文将从实用的角度出发,阐述引入... -
vba 正则表达式前后添加字符_Excel VBA入门教程 1.7 正则表达式
2020-12-09 02:24:51在VBA中使用正则表达式,因为正则表达式不是vba自有的对象, 故此要用它就必须采用两种方式引用它:一种是前期绑定,另外一种是后期绑定。前期绑定:就是手工勾选工具/引用中的Microsoft VBScript Regular ... -
vba正则表达式测试工具
2018-01-28 10:36:49支持win10,没有替换功能,可以替代vba进行的测试工具 -
VBA正则表达式入门与提高
2019-05-10 11:30:37其中很多晦涩难懂的内容在VBA中用不上或者对你来说根本无用的,而初学者的你却根本不知道怎样取舍.事实上,本人还没有发现一本针对VBA平台的正则专业书籍.网络可见到少量VBA正则教程,但内容多是”点到为止”. ... -
c++ 崩溃 正则表达式regex_VBA正则表达式
2021-01-07 13:08:45正在看蓝桥玄霜版主的字典帖,选了其中的两个例子(附件中的例A和例B),你看到的第一反应是用字典去解决,例A和例B使用正则表达式也很好的解决了问题。(给出这两个例子不是说正则表达式比字典好,只是借此体会正则... -
VBA正则表达式深度解析
2020-06-26 18:07:14先上代码: Function GetStr(ByVal rng As ... '第三个参数i 为正则表达式成功匹配的结果列表中的第几个,从0开始,默认为0即第1个 '第四个参数s 为文本[True]或数字[False],用于剔除数字中的文本内容,默认... -
在应使用条件的上下文(在 ) 附近)中指定了非布尔类型的表达式。_基础扩展 | 08. VBA正则表达式...
2021-01-26 04:43:28VBA正则表达式的语法与其他语言(如Python)中使用的语法有较大的区别,主要是因为VBA的RegEx对象带有可选参数,因此有时必须指定这些参数以获得与在其他语言中使用标准的正则表达式语法相同的结果。VBA正则表达式语法... -
vba 正则表达式前后添加字符_VBA之正则表达式(2) 批量修改公式
2020-11-24 23:24:00如下图所示,数据保存在F列,需要在每个单元格引用之前添加A列指定的工作表名称+!,结果如H列所示。需要注意的是,对于F16中的公式,由于I49已经指定工作表,所以此单元格不需要再处理,核心问题是如何定位单元格... -
EXCEL VBA 正则表达式
2017-07-06 16:15:09[2011-09-09:http://www.cnblogs.com/dxy1982/archive/2011/09/09/2159246.html] ... 数据验证经常出现的情况是,需要验证和处理大量的文本内容,有时候需要查找字符串,有时候要按条件替换,并且这些待处理的问题 -
EXCEL VBA 正则表达式 MatchCollection对象
2016-12-03 23:07:55正则表达式是通用的文本搜索和处理方案,它的知识不是VBA独有的,基本上每种语言都内置了正则表达式的功能。正则表达式的基础知识不是这里的重点,需要的朋友可以Google一下,或者参看下面的一些入门教程: ... -
Excel-VBA正则表达式提取文本案例
2019-10-02 23:47:44然而之前没学VBA里的正则表达式语法,因此就去网上搜了一下,结果发现根本不能运行。几经辗转,总算搞定,因此总结一下,供后来者参考。 有几点说明: 1、我是先在 Python中验证了正则表达式再copy到VBA中应用... -
vba 正则表达式前后添加字符_VBA各种实例过程代码,积木的补充
2020-11-30 03:43:53留言板:今日是双十一,下述教程中的第二套“数据库”和第三套“字典”是优惠的最后一天,如有需要的朋友还请尽快,另外在此期间,我还准备了11份资料大礼,送给确实需要想学习VBA的同路人;视频由于还没有正式推出...