最近大半年一直为新项目服务,而且几乎都是超超超级需要人力的活,但是人手不够,几个人要完成几十人团队才能完成的活。
不过还是熬过来了,最主要的原因还是手上的技术大突破,节省了超级多的人力。
比如今天分享正则表达式,就是我研究的几个技术之一。
什么是正则表达式
简单说一下,正则就是用来在大段文字符号中找出那些有共同规律的语言。
比如最近我做的电商网站,用的是woocomerce,这个woo自带的产品分类页面是系统自带的,无法修改,分类页面的架构是
xxx.com/product-category/ad-shoes
于是我就新建一个页面叫/ad-shoes,用页面来做,这样自由编辑都会高很多,除了用页面编辑外,我还需要做一件事,就是要把/product-category/ad-shoes跳转到/ad-shoes,这个就是301设置,一般是可以在插件中完成的,我之前用的301插件叫redirection,后来发现Rank math工具自带301,于是就舍弃了前者。
不过我的产品分类超级多,用上百个,如果手工每个都添加301的话,就要操作几百次,显然对于我来说是不划算的,于是我就开始总结规律了,发现:
所有的分类页面都是同样的布局,他们是可以用正则表达式来表达的,正则表达式为 /product-category/.*
如果你感兴趣可以用这个在线正则工具去测试一下正则表达式在线测试 | 菜鸟工具 (runoob.com)
那么我用/product-category/.* 就能找出所有的分类链接,再用正则找出所有的页面制作的分类链接,那么就可以用服务器设置批量301跳转了,服务器有apache和nginx,我的服务器是nginx,如是再nginx配置中,我的分类链接跳转写成了如下格式:
location ~ /product-category/.*
{
rewrite /product-category/(.*)$ https://$host$1 permanent;
}
简单解读下这句话的意思,就是当location是 product-category/xxx 这种格式的,一律跳转到/xxx
rewrite /product-category/(.*)$ https://$host$1 permanent; 其中
- rewrite 是nginx 301跳转的指令
- /product-category/(.*)$ 是/product-category/.*的变体,他俩意思差不多,括号括起来不影响正则使用,反而更有利于阅读。
- https://$host表示当前域名
- $1表示引用前面第一个括号内的内容,这也是为什么/product-category/(.*)$要用括号括起来
就是这样短短一句话,节省了我百倍人工。
当然还有我其他常用的正则表达式
<h1>.*</h1> 这个用来提炼代码中的h1标题
[\w.]+@+[\w.]+ 用来提炼邮箱
当然这篇文章不是分享正则的教程,只是我的一点使用心得,用了正则表达式,我就可以批量提炼自己想要的内容了。
如果你也想快速学会正则表达式,推荐一本书《正则表达式必知必会》,很薄的一本书,一个下午你就学会了正则。然后不懂了再拿书来翻翻,当作小工具书使用也是不错的选择。