有没有办法找到所有使用 var 和 require 的情况,并用 const 替换那些结果?

Posted

技术标签:

【中文标题】有没有办法找到所有使用 var 和 require 的情况,并用 const 替换那些结果?【英文标题】:Is there a way to find all occurrences of using var with a require, and replacing just those results with const? 【发布时间】:2021-03-13 19:58:36 【问题描述】:

在 VS Code 中,有没有办法使用正则表达式来查找所有使用var 声明使用require 分配值的变量的语句,然后将var 替换为const ?

我已尝试搜索,但找不到答案。

这是对正则表达式的尝试(这部分有效):var[ 0-9a-zA-Z]*= require

这是我不确定如何执行或是否可能的匹配部分的搜索和替换部分。

我已经设置了StackBlitz。

在这个截图中,我正在尝试替换

var zlib = require('zlib');

通过

const zlib = require('zlib');

【问题讨论】:

查看 VS Code 中捕获组的用法。 @SebastianSimon 感谢您的快速回复 - 这是关于使用工具本身的 - 我不明白为什么包含该工具的图像会导致投票失败。我确实添加了 StackBlitz 以使问题和问题更具交互性。我很欣赏有关研究捕获组的建议。 @WineGoddess 我已经为问题添加了更多描述作为建议的编辑 @WineGoddess 问题和答案必须是独立的,因此我们需要知道的回答问题或应用答案的所有内容都必须在帖子本身内。链接和图片只能是补充 查找:\bvar\b(?=.*\brequire\b) 替换:const 见regex101.com/r/DvRKOB/1 【参考方案1】:
in find section: var(.*?)=(.*?)require\(
in replace section: const$1=$2require(

在正则表达式 (.*) 周围使用圆括号可以使其成为一个组,可以通过使用组号 $1、$2 等在 vscode 的替换部分中引用它

详细解释请阅读vscode documentation here

请阅读this answer 了解另一个示例。

【讨论】:

谢谢! - .* 和我的一样更干净更短。 虽然,.* 可能匹配太多。我会推荐.*?。我建议,只需检查所有vars 并根据需要将它们替换为constlet @SebastianSimon 根据您的建议更新了正则表达式和屏幕截图。 请参阅regex101.com/r/TD0Aj3/1 了解一些不应匹配的情况,例如const somevar = require('zlib'); 字边界会有所帮助。

以上是关于有没有办法找到所有使用 var 和 require 的情况,并用 const 替换那些结果?的主要内容,如果未能解决你的问题,请参考以下文章

列出 'require' 函数加载的所有变量

通过“no-var-requires”ESLint 规则,导入没有声明文件的模块

有没有办法找出哪个文件使用了require_once?

有没有办法根据索引折叠几列,同时保留其他列?

可以在JSR 330中使@Inject成为可选项(如@Autowire(required = false)吗?

使用 require_partition_filter 列出 BigQuery 分区表中的所有分区