vscode正则匹配搜索

411 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 13 天,点击查看活动详情

vscode正则匹配搜索

案例1

需求:我们希望将keyDic里面的key全部变成字典形式

const keyDic = {
  keyA: 'keyA',
  keyB: 'keyB',
  keyC: 'keyC',
  keyD: 'keyD',
  keyE: 'keyE',
  keyF: 'keyF',
}

变成下面这种形式。

const keyDic = {
  keyA: { key: 'keyA', path: '/keyA' },
  keyB: { key: 'keyB', path: '/keyB' },
  keyC: { key: 'keyC', path: '/keyC' },
  keyD: { key: 'keyD', path: '/keyD' },
  keyE: { key: 'keyE', path: '/keyE' },
  keyF: { key: 'keyF', path: '/keyF' },
}

正常情况我们都会一个一个复制,今天介绍VSCode的正则替换将一步全部完成

正则匹配字母

我们知道匹配大小写字母 可以用[a-zA-Z]来表示,多个就在后面加上*号

[a-zA-Z]*

如何匹配

分析可以知道我们要替换的部分是 : 'keyA'

于是可以得到

: '正则匹配字母'

: '*([a-zA-Z]*)'

粘贴到搜索框后把最后正则匹配标致点一下, 如下图所示。

image.png

我们可以看到 冒号到字符串都被匹配到了。 image.png

如何替换

需求是将 : 'keyA' 替换成为 : { key: 'keyA', path: '/keyA' } 如何读取匹配到的字母,显示在替换的字母中呢 '$1'刚好实现,意思是正则匹配到的第一个部分,上面的正则匹配的刚好是字符串内容。

于是很容易得到如下内容

: { key: '$1', path: '/$1' }

image.png

技巧:将光标移到某个位置,则从哪里开始替换

是不是省了好多功夫

案例二

      { path: routePath.orderList, component: LazyLoad(() => import('../order/orderList')) },

替换成为

      { ...dict.orderList, component: LazyLoad(() => import('../order/orderList')) },

实现

匹配的正则语法

 path: routeConstant.[a-z_A-Z]*

替换后的内容

...dic.$1.

image.png

最终可以看到所有的都全部变了

总结

正则匹配到的部分,替换的时候需要用到的第几个正则就用$符号后面跟上对应数字

: '*([a-zA-Z]*)'
: { key: '$1', path: '/$1' }

将极大提高效率 开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 13 天,点击查看活动详情