打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
​不规则内容提取-正则表达式
常逛论坛的同学应该有看到这个案例,我们就通过这个案例来说一下,不规则特征字符提取的问题!

示例如下:

整体看上去有一定的规则,但是仔细看,会发现不是很明显,有的是从第一个“-”开始提取,有的是从第二个,其次有的开头是字母有的是数值,结尾也是这样,包括数值、字母和括号三种情况!

函数处理处理比较麻烦,也不是我们今天的主题,下面我们看一下,我已经写好了,自定义函数,直接提取即可




自定义函数代码如下:

每一句已经详细的注释,就不再啰嗦了!简单说一下,

本次教程中涉及到的正则元字符

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()]



更多元字符,为大家找了一篇,总结还算比较完善:

看不清图片的同学,可以详细参照:https://www.runoob.com/regexp/regexp-metachar.html


这样的元字符,一般都有特殊的含义,还有很多,有兴趣的可以百度学习一下,建议找成熟的网站,个人博客差次不齐,可能有很多坑!

元字符很多,不必要全部记住,记住一些常用的,其他简单熟悉一下,需要时再查!

值得说的是每种语言中的正则多少都有点区别,比如逆序环视问题,VBA据说是不支持的,有兴趣的同学可以测试一下!

作为中国人,很多同学可能更关注汉字问题,看了一圈好像也没看到有关汉字的匹配的正则,其实我们可以使用[\u4e00-\u9fa5] 这个可以记忆一下,也比较常用

可能有同学看到我们昨天发的了,那个\w 截图是有问题(误食大佬的总结),
\w表示的范围[0-9a-zA-Z_] 共63个字符(10+26*2+一个下划线),并不包括汉字

关于VBA中的正则对象,小编导图总结如下(有需要的自行收藏备查):


最近我们也在聊PQ,所以我们补充一种PQ解法,其他函数解法,自行论坛查看,这种不再啰嗦!

在PQ中之所以可以使用正则,本质是因为PQ直接获取网页内容,利用这点,我们就可以使用JavaScript中的正则表达式!这里的语法不同于VBA,是JavaScript的语法,所以想学PQ正则表达式,需要补充一点js基础知识!

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

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


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

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
正则表达式
php正则表达式的基本语法总结
【Python 第58课】 正则表达式(4)20150120058
【易POST】易语言“正则表达式”教程
55分钟学会正则表达式 - 博客 - 伯乐在线
正则表达式30分钟入门教程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服