URLhttps://learnscript.net/zh/vscode/editors/find/regex/
    复制链接转到说明  示例

    在 Visual Studio Code 中使用正则表达式进行高级搜索与替换

    我被代码海扁署名-非商业-禁演绎
    阅读 5:37·字数 1686·更新 

    引言

    正则表达式是处理文本搜索和替换的强大工具,特别是在复杂的匹配场景中。Visual Studio Code(VSCode)内置了完整的正则表达式支持,让文本的编辑处理更加高效。

    在 Visual Studio Code 中启用正则表达式

    在开始使用正则表达式之前,需要确保已启用该功能:点击搜索面板中的使用正则表达式按钮,或使用键盘快捷方式Alt+R

    启用后,即可在查找条件和替换内容中书写正则表达式。

    常见转义序列

    转义字符\可以转义正则表达式中的一些语法符号。比如,\\表示反斜杠自身,\[表示左方括号,\)表示右圆括号。

    以下是 VSCode 中常见的转义序列。

    \d

    任意某个数字字符(09)。比如,1\d3匹配表示以1开头以3结尾的三位数的文字。

    \w

    任意某个单词字符(字母、数字、下划线,不包含中文字符)。比如,set_\w\w\w\w匹配以set_开头后接四个单词字符的文字。

    \s

    任意某个空白字符(空格、制表符、换行符)。def\s匹配以def开头后接一个空白字符的文字。

    \D

    任意某个非数字字符。

    \W

    任意某个非单词字符。

    \S

    任意某个非空白字符。

    \n

    换行符。

    \r

    回车符。

    \t

    制表符。

    \xHH

    HH表示 Unicode 编码(十六进制的两位数),\xHH匹配该编码表示的字符。比如,\x20表示了空格。

    \uHHHH

    HHHH表示 Unicode 编码(十六进制的四位数),\uHHHH匹配该编码表示的字符。比如,\u4e00\u9fa5,可作为汉字字符的开始和结束。

    匹配字符集中的字符

    使用方括号[]可以匹配一系列字符(字符集)中的某一个字符。

    
    
    示例含义
    [\w]任意单词字符
    [a-d]a 到 d 之间的字母
    [0-3]0 到 3 之间的数字
    [\u4e00-\u9fa5]汉字字符
    [\(\)\[\]\{\}]各种括号
    [你我他]特定中文字符

    如果使用[^],则将匹配非字符集中的字符。

    
    
    示例含义
    [^A-D1-4]非 A 到 D 且非 1 到 4 的字符
    [^^]非 ^ 字符

    匹配次数

    在 VSCode 中,同样支持控制匹配次数的量词,可以简化正则表达式的书写。

    *

    匹配零次或多次。比如,abc*匹配ababcabcc等。

    +

    匹配一次或多次。比如,abc\s+表示abc后,至少有一个空白字符。

    ?

    匹配零次或一次。

    {n}

    匹配n次。比如,[abc]{3}表示由abc随意组成的三个字符。

    {n,m}

    匹配nm次。

    如果需要尽量少的匹配字符,则可以在量词后加?,以实现最小匹配。

    
    
    示例含义
    如果.*那么贪婪匹配,在“如果”和“那么”之间,匹配尽可能多的内容。
    如果.*?那么非贪婪匹配,在“如果”和“那么”之间,匹配尽可能少的内容。

    匹配位置

    在 VSCode 中,可使用如下方式来匹配一个位置。

    ^

    行首,^msg匹配行首的msg

    $

    行尾,"$匹配行尾的引号。

    \b

    单词边界,\bname\b匹配完整单词name

    分组与引用

    VSCode 正则表达式支持分组功能,可在表达式的其他部分来引用分组。查找时可通过\n的形式来引用,替换时可通过$n的形式来引用,其中n为分组的序号,默认从1开始。

    
    
    示例含义
    ("{3}|'{3}|"|')匹配 Python 中的四种引号类型。
    ("|')My name\1匹配 "My name" 或 'My name'。
    $1Your name$1可将上例中的 'My name',替换为 'Your name',或将 "My name" 替换为 "Your name"。

    断言

    正则表达式中的断言,可被视为一种位置检测,分为以下四种。断言内容不包含在匹配结果中,并且可用于后续的匹配过程。

    (?<=PATTERN)

    正向后行断言,位置之前的内容与子表达式PATTERN匹配。

    (?<!PATTERN)

    负向后行断言,位置之前的内容不与子表达式PATTERN匹配。

    (?=PATTERN)

    正向先行断言,位置之后的内容与子表达式PATTERN匹配。

    (?!PATTERN)

    负向先行断言,位置之后的内容不与子表达式PATTERN匹配。

    
    
    示例含义
    (?<=')Hello匹配前面有单引号的 Hello,但不包含引号。

    讲解视频

    如何在 VSCode 中使用正则表达式查找替换?语法详解与示例·YouTube如何在 VSCode 中使用正则表达式查找替换?语法详解与示例·Bilibili