关于正则表达式替换的一个想法(常识)
前言
前几天在配置 nginx ,的 subs_filter
这个模块,这个模块的作用就是可以将网页返回的内容进行替换
subs_filter "数据" "Hello world" r;
比如上诉代码可以将原来网页中包含数据
都替换为Hello world
, 最后的r
表示 是正则匹配,也就是第一个参数可以写正则匹配
然后我遇到了一个问题:
我替换的内容是不确定的,只知道是一个链接,但是我不可能将整个链接的正则都写出来,毕竟链接的url太多变化了,我想到了可以通过限制头尾部来匹配对应的内容
解决办法
限制头尾相同,那么就可以将头部尾部在匹配的正则和替换成内容的里面将头尾都写一遍
例如:
subs_filter "数据.*?结果" "数据Hello world结果" r;
以上就可以将 数据xxxx结果 替换成 数据Hello world结果
同样原理替换url 也可以,不需要知道url的正则怎么写, 头和尾部限定就好了
其他
由于写python习惯用re.findall 习惯将要匹配的打组,以为这样就会只替换括号中的内容
subs_filter "数据(.*?)" "Hello world" r;
这种语法是错误的,nginx的subs_filter没有这种语法
之所以写这篇文章,因为我当时陷入逻辑坑中了,总是想如果 正则里面如果写了头部和尾部,但是头部和尾部根本不是我想要的怎么办,不写头部和尾部就不能取到我要匹配的内容,但是后来突然想到了,不需要改变的内容只要在替换的里面重新写一遍就好了,非常简单
正则替换里面如果正则匹配里面有你不需要内容,只需要在替换成的内容里面再写一遍就好了
本文来自博客园,作者:Hello_wshuo,转载请注明原文链接:https://www.cnblogs.com/Hellowshuo/p/15622197.html