快速隱藏檢查用的Consle.log
需求
- 在 master Branch 中, 移除所有的 console.log
- 在開發時, 可以快速隱藏 所有 console.log
- 在開發時, 可以快速顯示 所有 console.log
解決方案 使用 Vscode
- regex replace 搜尋 console.log
- 使用正規表示式, 取代成所需格式
刪除所有 console.log (不管是否註解)
搜尋符合條件的 console.log
\/\/.*console\.log\(.*\)
替換成空白
- //:這部分匹配行中的注釋符號 //。在正則表達式中,斜杠 / 是特殊字符,用於界定正則表達式的開始和結束。因此,如果要在匹配模式中包括斜杠本身,需要使用反斜杠 \ 對其進行轉義,所以 // 變為 //。
- .:這是一個通配符序列,. 匹配任何單個字符(換行符除外), 表示前面的元素可以出現零次或多次。所以,.* 代表匹配任意長度的任意字符序列,包括空序列。
- console.log:這部分直接匹配文本 console.log。同樣,因為點 . 在正則表達式中是一個特殊字符,代表匹配任何單個字符,所以當我們想 要匹配點字符本身時,需要使用反斜杠對其進行轉義,即 .。
- (.):匹配 console.log 語句中的括號及其內部的任意字符。括號 ( 和 ) 也是正則表達式中的特殊字符,用於分組,因此需要用反斜杠轉義 ( 和 ) 以匹配實際的括號字符。. 匹配括號內的任意長度字符序列。
or select console.log , Ctrl + D to select all console.log, Ctrl + L to select all line, then delete
註解所有 console.log
搜尋符合條件的 console.log 但不包含已註解的 console.log
^(?!.*\/\/.*console\.log).*console\.log\(.*\)
替換成註解的 console.log
// $0
-
^:這個符號表示匹配行的開頭。它確保了接下來的模式必須從每一行的最開始匹配。
-
(?!.*//.*console.log):這是一個否定前瞻(negative lookahead)表達式。前瞻是一種不消耗字符的斷言,用來檢查某個模式是否在後面出現(或不出現,對於否定前瞻來說):
- ?! 表示這是一個否定前瞻。
- .//.console.log 檢查是否存在任意字符(.),後面跟著注釋符號 //,然後是任意字符(.)和 console.log 語句。如果這樣的模式存在,則否定前瞻失敗,表示該行不匹配。
-
.console.log(.):在確定一行不含被註解的 console.log 後,這部分匹配包含 console.log 語句的任意位置。它由以下部分組成:
- .* 匹配行中 console.log 之前的任意字符。
- console.log 直接匹配文本 console.log。點(.)被轉義了(.),因此不是作為任意字符匹配的特殊符號。
- (.*) 匹配 console.log 語句的括號及其內部的任意字符
還原所有已註解 console.log
搜尋符合條件的 console.log 的註解符號
\/\/(?=\s*console\.log)
替換成原未註解的 console.log
-
//:这部分匹配代码中的注释符号 //。在正则表达式中,斜杠 / 是一个特殊字符,通常用于标记正则表达式的开始和结束。因此,当我们需要在模式中查找斜杠本身时,必须使用反斜杠 \ 进行转义,从而 // 写作 //。
-
(?=\sconsole.log):这是一个正向预查(lookahead)表达式,用于指定一个条件,即在 // 之后(可能有任意数量的空白符,包括空格和制表符,由 \s 匹配)必须紧跟 console.log 文本:
-
?= 表示这是一个正向预查,它要求紧接着当前位置的字符串满足某个模式,但不消耗(也就是说,不移动匹配“光标”)任何字符。
-
\s* 匹配任意数量的空白字符,包括空格、制表符等。
-
console.log 直接匹配文本 console.log。由于点号 . 在正则表达式中是一个特殊字符,表示“匹配任意单个字符”,因 此如果要匹配点号本身,需要使用反斜杠进行转义,即 .。