正则表达式邪修,快速写出表达式

9 条回复
55 次浏览

正则表达式有好多规则,组合起来可以实现特定的功能,自己写有些规则烧脑,现在有 ai 方便多了,但是保不齐有 ai 理解错了写出纰漏,如何在日常工作中利用正则表达式提高效率?

只需要会.+?x三个就够了,或者.+(?=x)其中x为终止符,比如:
要获取 2libra 首页的所有帖子链接和标题,爬虫的话可以根据网页结构爬,还是要先拆解结构,如果是临时获取,如何快速提取呢?

image
提取所有的/post/和标题
首先找到特征,所有带 post 帖子链接的情况有两种
href="/post/workplace-stories/uaTDQ7a">请问大佬们编程技术是如何进步的?纯帖子
href="/post/workplace-stories/uaTDQ7a?commentId=0738444d-60e0-4919-9233-15499970f60e&p=1">最后回复带回复的
我们只需要第一种,那就是以 post 开头,双引号结尾,且不带参数的,根据比对,第二种链接结尾有问号。

因为这里是邪修,所以不考虑提纯,先用正则表达式粗提取,再用 replace。

那么就是先用/post/.+?\"提取所有带 post 的链接。
image
达到目的
本文是为了快速提取内容,所以这里没有用正则的限定长度,不追求一步到位,可以用限定长度取得更精准

然后去掉带问号的链接

然后如何获取标题呢?
一样的找规则,标题都是以>开头,以<结尾,但是这样会匹配到其他内容,所以可以把上面的复用。
image
/post/.+?<这样就可以了
再用 split 和 replace 就可以了

可以看到后面的正则表达式一次可以完成两个内容的提取。

1、正则表达式粗提取
2、split、replace 提纯

再重复一遍,本文只是用于处理临时数据提取,将复杂问题转化为简单方法,把复杂的语法转为简单的 split、replace 这种简单的,可以用正则表达式做的更好,但是这里的目的是一秒想出表达式,适用于新手和简单场景,总结就是一句话,找到开始的特征和结束的特征,然后提取整段,去掉头尾得到内容。

  • 附言 1

    这是我接触正则表达式后在一些简单场景用的最多的表达式,如果出现转义字符也只需要微调,一般就是换行需要改一下表达式,其他场景够用了。

都听我说!

现在这种我都把需求提给 AI,让它帮我写了,包括但不限于正则、SQL、JS 脚本这类doge

种子用户
OP

有些环境比较复杂,如果没描述清楚,ai 给的表达式可能只能覆盖部分场景,其实还是问法影响最终答案。

都听我说!

是的,How to ask question 提问是门学问这个事情,在 AI 时代给具象化了。

种子用户
OP

@2Libre 提问是一门艺术,问题说的不清楚,ai 只会猜测,只是解决单一场景的问题。

种子用户
OP

目的就是让新手快速上手和使用正则表达式,应对一些临时数据处理的场景,不是正统学法,在生产代码里面这么写可能会让人笑话或者驳回,自己用用还是很方便的。

种子用户
OP

比如可以扩大开头:line-clamp-2\" href=\"/post.+?\"
image
提取后 replace 前面的固定部分,再 replace 双引号就好了。
如果不想 replace 两次就可以用:line-clamp-2\" href=\"/post.+?(?=\")
image
那么就没有结尾的双引号了,这种用法需要微调吗,但是也很简单,这两个正则一分钟都不要就能写出来。

种子用户

正常情况下写正则也只需要会?+*\d\w 和分组也就够了, 命名分组和预置检查大部分情况都用不上, 有的语言还不支持

种子用户
OP

是的,我这是说在简单场景,只要会几个简单的把海量数据粗提纯,后面只要能用替换解决就可以了,主要目的还是快,而且用多了后面再扩展就不难了。

发表一个评论

R保持