常逛论坛的同学应该有看到这个案例,我们就通过这个案例来说一下,不规则特征字符提取的问题!示例如下:
整体看上去有一定的规则,但是仔细看,会发现不是很明显,有的是从第一个“-”开始提取,有的是从第二个,其次有的开头是字母有的是数值,结尾也是这样,包括数值、字母和括号三种情况!函数处理处理比较麻烦,也不是我们今天的主题,下面我们看一下,我已经写好了,自定义函数,直接提取即可
自定义函数代码如下:
每一句已经详细的注释,就不再啰嗦了!简单说一下,本次教程中涉及到的正则元字符:
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按照"-"拆分后,根据收尾满足条件提取,算中一种思路!但是依然比较麻烦!
(昨天昨日时间仓促,偷了个懒,没想到就踩到了坑,已自己全部重新整理)
最后感谢各位老铁的提醒和反馈,本篇是在补充和完善昨天的内容后,重新发布!