繁体   English   中英

VSCode 正则表达式搜索和替换以删除代码块

[英]VSCode Regex Search and Replace to Remove Code Block

我们如何使用 VSCode 搜索和替换正则表达式来删除具有模式的代码块

    id: {

      ...

      field: "id"
    },

例如,如果我们有以下代码:

module.exports = sequelize => {
  const attributes = {
    id: {
      type: DataTypes.INTEGER,
      allowNull: false,
      defaultValue: "nextval(foo_id_seq::regclass)",
      comment: null,
      primaryKey: true,
      field: "id"
    },
    count: {
      type: DataTypes.INTEGER,
      allowNull: false,
      defaultValue: null,
      comment: null,
      primaryKey: false,
      field: "count"
    },

搜索和替换后,它应该变成

module.exports = sequelize => {
  const attributes = {
    count: {
      type: DataTypes.INTEGER,
      allowNull: false,
      defaultValue: null,
      comment: null,
      primaryKey: false,
      field: "count"
    },

尝试使用\\t\\t\\tid: {*.? "id"\\n\\t\\t\\t}, \\t\\t\\tid: {*.? "id"\\n\\t\\t\\t},但它无法选择任何内容。

显然 VSCode 仅在包含\\n时才执行多行正则表达式:

所以这应该有效:

\bid:(\n|.)+(?=count:)

(?=)是正向前瞻,因此它会查找“count:”之前的所有内容。

搜索:

\n\s+id: \{\s+[^}]*field: "id"[^}]*\},

并替换为空字符串。

https://regex101.com/r/rpOnch/1

您确实需要转义{括号,这对于正则表达式引擎来说是不寻常的。

要修复您的原始模式,您需要

  • 避开括号

  • 替换*.? .*? 如果你可以让点匹配换行符,但我在 VSCode 中没有看到这样做的方法,所以你可能必须使用[\\s\\S]*? (或类似的东西)代替

您可以使用Select By扩展。

根据 2 个正则表达式搜索您想要的块。 选择将被调整。 删除

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM