美文网首页
正则表达式中的插入操作

正则表达式中的插入操作

作者: mrwoody | 来源:发表于2019-06-27 11:34 被阅读0次

    写爬虫的时候,使用正则表达式提取、替换数据可以说是常规操作;之前总是很急功近利,以为记住几个常用的符号就能覆盖大部分使用场景了,反正来来回回都是在Python环境中,再不多写几个语句就能处理掉。
    当然,正则的强大从一开始接触也是有所了解,不愿意再深入学习一是时间有限,二是确实没到非用不可的时候。最近,刚好有这么一个需求,于是又折回去看了一眼,在这里简单记录一下吧!
    具体需求:学习django的过程中,从网上找了一个前端模板simple-admin,根据教程指示把模板的js/css/img等文件单独放入应用下的/static/文件夹,html文件则一股脑放入了/templates/。但html中引用的静态文件路径都还是同一文件夹下,这样就需要引入static变量,并逐一进行修改。
    这是非常大的一个工作量,使用正则查找了一下有待修改的文件,仅index页面就有30多出需要修改,手动进行效率非常低下。既然格式非常相似,使用visual studio的查找替换功能应该可以解决,恰好支持正则表达式。但之前只是将特定模式的字符串替换成新字符串,如何在正则匹配到的特定位置进行插入呢?
    通过查询文档,找到了正确的姿势:

    正则表达式中的(pattern) 匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,JS中使用$1...$9来获取属性。(貌似有些地方用\1...\9这种也可以获取。)

    本来以为有挺多需要扩展的,但是针对我这个需求好像知道这些也足够了。
    我们想做的是将形如
    <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"> 修改为
    <link href={% static "bootstrap/css/bootstrap.min.css" %} rel="stylesheet">
    也就是匹配到href=保存为$1,".*.css|js|jpg"保存在$2,引号后的任意字符保存在$3。然后替换成$1 {% static $2 %}$3即可。
    因为还有些细节问题需要处理,再加上我对正则的理解不太到位,实际上的表达式可能有些冗余和粗暴,这里就大概放个截图吧,效果还是杠杠的!

    image.png

    相关文章

      网友评论

          本文标题:正则表达式中的插入操作

          本文链接:https://www.haomeiwen.com/subject/hhylcctx.html