vba 正则表达式前后添加字符_不规则内容提取正则表达式

博客介绍了正则表达式中 [] 的匹配规则,如 [abc] 可匹配 a、b、c 任意字符。还提到自定义的 pq 函数 reg 在 Table.AddColumn 中的调用,这是 PQ 学习的基础用法。也给出普通 PQ 函数按“-”拆分提取的思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常逛论坛的同学应该有看到这个案例,我们就通过这个案例来说一下,不规则特征字符提取的问题!示例如下:fc96e25553704f1df65a1c139c5c25db.png整体看上去有一定的规则,但是仔细看,会发现不是很明显,有的是从第一个“-”开始提取,有的是从第二个,其次有的开头是字母有的是数值,结尾也是这样,包括数值、字母和括号三种情况!函数处理处理比较麻烦,也不是我们今天的主题,下面我们看一下,我已经写好了,自定义函数,直接提取即可8d0958759eaa19d173279502b4271b3b.png自定义函数代码如下:

7c4895040e5a8a796829352712c8901a.png

每一句已经详细的注释,就不再啰嗦了!简单说一下,本次教程中涉及到的正则元字符

1、[] :表示匹配括号中的任意一个。[abc]表示匹配abc任意字符, "a" 或  "b" 或 "c"

2、a-z: 表示a到z 这26个小写字母,在方括号内表示一个整体,不能看成"a","-","z"这个三个字符。由于我们正则忽略了大小写,所以可以匹配全部大小写字母3、\d 表示0到9这10个数字,等同于[0-9],可以记忆为digit(数字)的首字母4、+ 表示匹配[]中任意内容的一次或者多次!相关的还有问号(?)和星号(*)综上:表示匹配数字、字母、括号,一次或者多次。等同于[a-z0-9()]
更多元字符,为大家找了一篇,总结还算比较完善:

8764add6b4e7cbbde1258150722df4a9.png

看不清图片的同学,可以详细参照:https://www.runoob.com/regexp/regexp-metachar.html这样的元字符,一般都有特殊的含义,还有很多,有兴趣的可以百度学习一下,建议找成熟的网站,个人博客差次不齐,可能有很多坑!元字符很多,不必要全部记住,记住一些常用的,其他简单熟悉一下,需要时再查!值得说的是每种语言中的正则多少都有点区别,比如逆序环视问题,VBA据说是不支持的,有兴趣的同学可以测试一下!作为中国人,很多同学可能更关注汉字问题,看了一圈好像也没看到有关汉字的匹配的正则,其实我们可以使用[\u4e00-\u9fa5] 这个可以记忆一下,也比较常用可能有同学看到我们昨天发的了,那个\w 截图是有问题(误食大佬的总结),\w表示的范围[0-9a-zA-Z_] 共63个字符(10+26*2+一个下划线),并不包括汉字!关于VBA中的正则对象,小编导图总结如下(有需要的自行收藏备查):3b03fde07c1f7a79217f7f29e56052a3.png2ab0e9ec7bb7df071435012d9f1bca75.pngc1054021f64017602b7a5d17bf8ea849.png3b4c282de228d29cf962c0527dc540f9.png最近我们也在聊PQ,所以我们补充一种PQ解法,其他函数解法,自行论坛查看,这种不再啰嗦!在PQ中之所以可以使用正则,本质是因为PQ直接获取网页内容,利用这点,我们就可以使用JavaScript中的正则表达式!这里的语法不同于VBA,是JavaScript的语法,所以想学PQ正则表达式,需要补充一点js基础知识!

89fac415c48ff3a705fc667f0c0f0e80.png

reg是我们自定义的一个pq函数,在Table.AddColumn直接调用,这在未来的PQ学习中也是比较基础和常见的用法!

如果使用普通PQ函数,可以考虑Text.Split按照"-"拆分后,根据收尾满足条件提取,算中一种思路!但是依然比较麻烦!


(昨天昨日时间仓促,偷了个懒,没想到就踩到了坑,已自己全部重新整理)

最后感谢各位老铁的提醒和反馈,本篇是在补充和完善昨天的内容后,重新发布!

4f0e0e51264bc09878a6524d2d741eae.gif4f0e0e51264bc09878a6524d2d741eae.gif4f0e0e51264bc09878a6524d2d741eae.gif分享、点赞、在看三连

点亮★,不迷路!

1a679444c0d6d6dc0e389aa4348f4b76.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值