在 VSCode 正则表达式搜索中匹配文件的开头

Flo*_*elt 7 regex visual-studio-code

我正在尝试在 VSCode 正则表达式搜索中匹配文件的开头以查找并删除以下模式:

//
Anything else to leave in place
etc.
Run Code Online (Sandbox Code Playgroud)

我想删除所有包含//\n第一个字符的文件中的第一行。但是,当我执行正则表达式搜索时,//\n它显然会匹配所有文件中的所有出现,无论它们在文件中的位置如何。

正则表达式语言\A在某些编辑器中提到匹配行或文件的开头的存在,但 VSCode 拒绝此正则表达式为无效:\A//\n

所以我的问题是,如何在 VSCode 中匹配文件的开头来实现我所需要的?

Wik*_*żew 15

Visual Studio Code 正则表达式中文件的开头可以匹配

^(?<![.\n])
^(?<![\w\W])
^(?<![\s\S\r])
Run Code Online (Sandbox Code Playgroud)

您可以使用

查找内容^//\n([\s\S\r]*)
替换为$1

或者,由于现在 VSCode 支持lookbehinds 作为现代 JS ECMAScript 2018+ 兼容环境,您也可以使用

查找内容^(?<![\s\S\r])//\n
替换为:空

如果您想知道为什么[\s\S\r]使用而不使用[\s\S],请参阅Visual Studio Code 中的多行正则表达式

细节

  • ^ - 一行的开始
  • //- 一个//子串
  • \n - 换行
  • ([\s\S\r]*)- 组 1 ( $1):任何 0 个或更多字符,直到文件末尾。

^(?<![\s\S\r])//\n正则表达式的方法:

  • ^(?<![\s\S\r])- 仅^匹配第一行的开头作为匹配行的开头,(?<![\s\S\r])如果当前位置左侧有任何 1 个字符,则负向后视匹配失败
  • //\n-//和换行符。

  • `^(?&lt;![.\n])` 可能不正确:它将查找前面没有换行符(好)和实际点(不好)的位置。我只使用 `^(?&lt;!\n)` (2认同)