匹配特定字符串后的所有空格

Match all spaces after a particular string

在 VsCode 中对大量文件进行查找和替换。我想替换一组引号后的所有 space,但只替换特定行。

我可以很容易地使用 \s+ 找到所有 spaces,但我不明白如何在特定字符串(一个特定行)之后仅捕获 spaces .我试过正面看后面,但我只能让它匹配第一个 space,但我需要匹配该行上的所有 space。

示例代码:

variable = "01 - Testing this thing"

我需要找到引号之间的所有 space 并将其替换为下划线,但我无法获得任何正则表达式来匹配引号之间的所有 space。我可能也想替换破折号 (-),但 space 更重要,我正在努力弄清楚。

您搜索匹配的字符串,它在引号之间有一个 space。替换为 space 前后的内容,但 space 现在是下划线。您必须像字符串中的最大数量 od spaces 一样频繁地应用它。无法在 1 个正则表达式搜索替换中完成。

在搜索栏中

查找正则表达式:

(variable = "[^" ]*) ([^"]*")

替换:

_

然后应用全部替换(按钮)和刷新(按钮)直到找不到更多搜索。

这是一个非常好的工作流程。

  1. 打开搜索编辑器(从命令面板或为其设置键绑定)。
  2. 使用这个正则表达式 (?<=variable = ")[^"]*
    这将在您的工作区或您在 file to include 过滤器中指定的任何文件夹中的所有文件中找到所有匹配项。我建议将上下文行选项设置为 0.
  3. Ctrl+Shift+L 到 select 所有匹配项。匹配项是 01 - Testing this thing 部分。
  4. 现在在该搜索编辑器选项卡中进行常规查找 - 启用 Find in Selection 选项。
  5. 只需查找 并将全部替换为 _ 即可进行所有这些更改(仅在搜索编辑器中)。
  6. 要将这些更改应用到包含初始搜索结果的所有文件,请使用扩展 search-editor-apply-changes Apply Search Editor Changes... 命令。

然后您可以检查更改是否符合您的预期并保存所有。它将打开所有受影响的文件,以便您检查它们。


似乎只有几个步骤,但请注意第一个正则表达式可以非常简单。然后你在那些 select 离子中做一个简单的 find/replace。演示: