如何在不替换的情况下找到某物

How to find something without replacing it

我想使用 atom 查找和替换功能来更改项目中的行,例如

var expressJwt = require('express-jwt');

进入

const expressJwt = require('express-jwt');

所以我做了一个正则表达式:

(var|let)\s?\w+\s?\=\s?require

然后我放入替换函数

const  = require

但我不想在替换中再次输入 "require",而且我不知道如何在查找函数中不捕获它。 我尝试了 find

(var|let)(?:\s?\w+\s?\=\s?require)

但是它找到了这条线并想替换它

你可以使用前瞻,(?=require):

(var|let)\s?(\w+)\s?\=\s?(?=require)
                         ^^^^^^^^^^^

匹配 = 之后的可选空格后,前瞻将断言存在 require 子字符串,如果缺少,匹配将失败。

请注意,为了让 </code> 得到填充,您需要用捕获组包裹 <code>\w+

参见regex demo

详情

  • (var|let) - 第 1 组:varlet 子串
  • \s? - 1 或 0 个空格
  • (\w+) - 第 2 组:一个或多个单词字符
  • \s?\=\s? - = 包含 1 或 0 个空格
  • (?=require) - 正向前瞻,需要在当前位置的左侧立即存在 require