如何在不替换的情况下找到某物
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 组:var
或 let
子串
\s?
- 1 或 0 个空格
(\w+)
- 第 2 组:一个或多个单词字符
\s?\=\s?
- =
包含 1 或 0 个空格
(?=require)
- 正向前瞻,需要在当前位置的左侧立即存在 require
。
我想使用 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 组:var
或let
子串\s?
- 1 或 0 个空格(\w+)
- 第 2 组:一个或多个单词字符\s?\=\s?
-=
包含 1 或 0 个空格(?=require)
- 正向前瞻,需要在当前位置的左侧立即存在require
。