ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: liu-aguang

[原创] 正则表达式入门与提高---VBA平台的正则学习参考资料

    [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-18 08:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:文本处理和正则
inerestt 发表于 2020-5-18 01:13
猫头鹰大神啊,这部分我不太明白,
1、为什么NFA引擎就要^\d+$会在匹配了123456之后,还要回溯12345,12 ...

能耐着性子看到这部分内容,说明你很有毅力。要明白这部分内容,必须对正则匹配原理有深刻的理解。此文对原理只是作了简单描述,建议去看看专业书籍中对原理的详细论述。
对你的第一个问题,下面是正则匹配过程:
批注 2020-05-18 083409.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-18 09:03 | 显示全部楼层
第2个问题,现代电脑都较强大也许用不了几天,但差别是明显的。你可测试:
  1. Sub test()
  2.     Dim regx, S$
  3.     S = "111111111111111111111111111111X"
  4.     Set regx = CreateObject("vbscript.regexp")
  5.     regx.Pattern = "^(\d+)+$"    '比较:^\d+$
  6.     MsgBox regx.test(S)
  7. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2020-5-18 10:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
liu-aguang 发表于 2020-5-18 08:35
能耐着性子看到这部分内容,说明你很有毅力。要明白这部分内容,必须对正则匹配原理有深刻的理解。此文对 ...

哦!原本表达式中的量词+是贪婪的,所以一开始是从最大匹配量123456开始测试匹配,而不是从1开始、从少到多匹配,所以就会出现从多到少回溯,是不是这样理解??
还有,猫头鹰大神能推荐1-2本正则表达式的专业书籍吗??

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-18 11:15 | 显示全部楼层
inerestt 发表于 2020-5-18 10:12
哦!原本表达式中的量词+是贪婪的,所以一开始是从最大匹配量123456开始测试匹配,而不是从1开始、从少到 ...

就是本文开始提到的那本。

TA的精华主题

TA的得分主题

发表于 2020-5-19 13:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
跨越6年的帖子,楼主辛苦

TA的精华主题

TA的得分主题

发表于 2020-5-19 21:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
liu-aguang 发表于 2014-6-16 18:49
三、匹配其内部由相似结构字符串构成的字符串     例1:匹配一个IPv4地址     正则表达式:      25[0-5]|2[ ...

谢谢猫头鹰大神的之前的解答,然后这个^[\w!#$%&’*+/=?{|}~^-]+(?:\.[!#$%&”*+/=?{|}~^-]+)*@(?:[a-z0-9-]+\.)+[a-z]{2,6}$的第2部分(?:\.[!#$%&”*+/=?{|}~^-]+)*是不是少了个\w,然后不知道现在的邮箱名能不能用中文字,如果能用我改成这样不知道行不行?
"^[一-龥\w!#$%&??*+/=?{|}~^-]+(?:\.[一-龥\w!#$%&??*+/=?{|}~^-]+)*@(?:[a-z0-9-]+\.)+[a-z]{2,6}$"
再如果我改成这样'"^[^\.]([\S](?!\.\.))+(?:\.[\w!#$%&??*+/=?{|}~^-]+)*[^\.]@(?:[a-z0-9-]+\.)+[a-z]{2,6}$"有没有问题,没问题的话会不会比上面的效率慢了??

TA的精华主题

TA的得分主题

发表于 2020-6-11 22:07 | 显示全部楼层
inerestt 发表于 2020-5-19 21:39
谢谢猫头鹰大神的之前的解答,然后这个^[\w!#$%&’*+/=?{|}~^-]+(?:\.[!#$%&”*+/=?{|}~^-]+)*@(?:[a-z0- ...

我去,这个太复杂了

TA的精华主题

TA的得分主题

发表于 2020-6-12 09:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
小白一枚,正则表达式很容易让人昏昏的

TA的精华主题

TA的得分主题

发表于 2020-6-27 14:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这样的特别适合初学者,全网难觅的好教材,只有在论坛里才找得到!百度搜遍也找不到!30分学会,对初学者来说,就象读天书。

TA的精华主题

TA的得分主题

发表于 2020-7-2 19:56 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-26 16:01 , Processed in 0.043007 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表