正则表达取某文字之间的内容_?不规则内容提取-正则表达式

010500dd97209a86dbe229372bbd2720.png

常逛论坛的同学应该有看到这个案例,我们就通过这个案例来说一下,不规则特征字符提取的问题!示例如下:

dd6aa7e7f79efb23fe93071ebb4059c8.png

整体看上去有一定的规则,但是仔细看,会发现不是很明显,有的是从第一个“-”开始提取,有的是从第二个,其次有的开头是字母有的是数值,结尾也是这样,包括数值、字母和括号三种情况!函数处理处理比较麻烦,也不是我们今天的主题,下面我们看一下,我已经写好了,自定义函数,直接提取即可

ab652104171c47af69590b949fc7aa7e.png

自定义函数代码如下:

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


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

d3c0b5fdb274573acd932874eea10aaa.png

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

fa3e8501a2ce01157e44e62126a35a71.png

eb40137efde874a7d37f281329ea86d2.png

5cd2bbb67755ed9a2eb4be6605768d7e.png

0ab27374e7185b07347790519ae2d1ba.png

最近我们也在聊PQ,所以我们补充一种PQ解法,其他函数解法,自行论坛查看,这种不再啰嗦!在PQ中之所以可以使用正则,本质是因为PQ直接获取网页内容,利用这点,我们就可以使用JavaScript中的正则表达式!这里的语法不同于VBA,是JavaScript的语法,所以想学PQ正则表达式,需要补充一点js基础知识!

04847833ef9b2a3103daa0c04ea06acf.png

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

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


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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值