PyCharm 2025.3 Help

结构化搜索与替换

常规搜索过程不会考虑源代码的语法和语义。 即使使用正则表达式,PyCharm 仍会将您的代码视为普通文本。 通过 结构化搜索与替换SSR )操作,您可以在考虑代码结构的情况下,在代码中搜索特定的代码模式或语法结构。

PyCharm 会根据您创建的 搜索模板 以及应用的 条件 查找并替换源代码片段。

按结构搜索目标

  1. 在主菜单中,转到 编辑 | 查找 | 按结构搜索 以打开 结构搜索 对话框。

  2. 结构搜索 对话框中,执行以下操作之一:

    • 从头创建模板:在模板列表中选择 草稿模板 ,并在编辑器区域中输入代码模板(例如, $variable$ 表示您的代码)。

      要将自定义模板保存以供日后使用,请在对话框工具栏上点击 保存模板 图标(保存模板按钮)。 您还可以选择将该模板另存为检查。

      结构化搜索对话框
      结构化搜索对话框

      PyCharm 会将创建的模板添加到模板列表中的 最近 节点。

    • 使用现有模板之一作为原型:从可用的现有模板列表中选择所需的模板。

      请考虑添加到 HTML 文件中的以下样式定义:

      <style> #element1 { display: inline-block; width: 25%; margin-top:90px; } #element2 { display: inline-block; width: 40%; margin-top:10px; } </style>

      让我们查找 HTML 文件中包含在 <div> 标记内的样式元素的所有引用。

      XML /HTML 下选择 HTML 属性值

      现有模板对话框

      点击 查找 ,在整个项目中搜索这些结构。

      PyCharm 会在编辑器中立即高亮显示找到的代码匹配项。

  3. 结构搜索 对话框会显示所选模板及其筛选器的值。 您可以编辑现有筛选器,或添加新的 条件 ,例如正则表达式或 脚本约束。 将插入符号置于代码变量上,并使用筛选器区域管理其筛选器。

    编辑筛选器弹出窗口
  4. 修饰符 面板中,点击 添加添加按钮 )以创建新的修饰符。 若要使用正则表达式,请选择 文本。 您还可以根据变量添加 其他修饰符

  5. 在此示例中,设置以下条件:

    • 对于 $tag$text=div

    • 对于 $attribute$text=id

    • 对于 $value$text=element[1-9]

    在筛选器对话框中添加正则表达式
  6. 指定搜索范围:项目、模块、目录或自定义范围。

  7. 点击 查找

    PyCharm 会在 查找 工具窗口中显示结果。

    查找工具窗口中的结果

按结构替换目标

  1. 在主菜单中,转到 编辑 | 查找 | 按结构替换

  2. 按结构替换 对话框中,将新的或 现有模板 添加到搜索与替换模板区域。 您可以像保存 搜索 模板一样保存替换模板。

  3. 如果需要为替换模板中的变量添加筛选器,请将插入符号置于感兴趣的变量上,并使用筛选器区域管理其筛选器。

    按结构替换
  4. 在筛选器区域中,根据您选择的 筛选器 ,指定条件。

  5. 要缩小替换结果范围,请选择以下选项:

    • 缩短完全限定名 - 将完全限定类名替换为短名称并添加导入。

    • 重新格式化 - 自动格式化替换后的代码。

    • 使用静态导入 - 在可能的情况下在替换中使用静态导入。

    指定必要的选项后,点击 查找。 PyCharm 会在 查找 工具窗口中显示结果。

  6. 查找 工具窗口中,您可以进一步处理结果,逐个替换找到的项目、一次性全部替换,或预览潜在的更改。

请参考以下示例,将 p 标记中 class 属性的大写值转换为小写。 在 搜索模板 字段中,我们创建一个模板,用于搜索 class 属性中具有大写值([A-Z].*区分大小写 )的所有 p 标记。 我们将搜索范围仅限定为这两个 class 值(搜索目标 = b)。 在 替换模板 字段中,我们创建一个新变量 $d$ ,并为其分配一个 Groovy 脚本(b.getText().toLowerCase())。 搜索完成后,我们选择 全部替换 执行替换。

共享搜索模板

您可以通过导出或导入与同事共享搜索模板。

  1. 结构搜索 对话框(编辑 | 查找 | 按结构搜索 )中, 创建新的搜索模板或使用现有模板

  2. 要导出模板,请点击 将模板导出到剪贴板图标。 PyCharm 会将该模板的 XML 表示添加到剪贴板(按 Ctrl+Shift+V 查看剪贴板内容)。 您可以在聊天、电子邮件或论坛中将此表示与其他开发者共享。

    要导入模板,请从任意位置(电子邮件、聊天或论坛)复制(Ctrl+C )共享的 XML 代码,并在 结构搜索 对话框中点击 从剪贴板导入模板图标。 PyCharm 会获取该 XML 代码表示,并将其转换为模板,其中包含变量和范围(如果存在)。

最后修改日期: 2025年 12月 2日