正则替换

vscode正则查找替换

vscode正则查找替换

月盾

查找某一类型字符串:

正则表达式onclick=.*" 会查找到所有: onclick="_msq.push(['trackEvent', '210074305d6b0409-09c7759e04e98528', ''pcpid', '']);"

onclick=是固定一样的字符,

.代表除\r和\n之外的任意字符,等价于[^\r\n]

*代表匹配前面的模式 0或多次 {0,}

"这是字符串最后一个字符

在vscode中的效果如下: vscode正则查找替换 至于要替换成什么就看自己需求了,如果要给选中的字符串包裹字符串则需要修改成这样:

查找替换

查找:(onclick=.*")

替换:aaa($1)

结果:

vscode正则查找替换

替换字符串两头,保留中间

vscode正则查找替换

两部分文字交换位置

相同模式的文字交换位置。

查找:(\(\d{4}-\d{1,2}-\d{2}\)) (\[.*\))

替换:$2 $1

结果:

vscode正则查找替换

vscode中一对括号()代表一个变量。

第一组正则 (\(\d{4}-\d{1,2}-\d{2}\)) 对应 $1

第二组正则 (\[.*\))对应 $2,以此类推。

所以,可以查找多组数据,在替换部分将两个对应变量交换位置即可。

mongodb forEach替换文本

月盾

最近七牛云存储要收回测试域名,但是我的博客中图片使用了这些测试域名,所以要替换掉,避免图片不可访问。在文档中没有找到可以直接替换的方法,所以就使用了mongodb的forEach循环替换。 首先用正则查询法查出使用了测试域名的文档,然后forEach循环,在每个循环中使用js的正则替换函数将域名替换掉,最后再保存该文档即可。

db.getCollection('blogs').find({content:{$regex:/hopefully.qiniudn.com/}}).forEach(function(item){
    item.content = item.content.replace(/hopefully.qiniudn.com/g, 'hopefully-img.yuedun.wang')
    db.getCollection('blogs').save(item)
	print(">>", item.content);
})