PyCharm 2025.3 Help

结构化搜索和替换示例

如您所知,常规搜索与结构化搜索的主要区别在于,结构化搜索会在编程语言中查找结构化模板。

结构化搜索的妙处在于,您可以基于现有模板创建模式,从而在搜索和替换代码时节省时间。

丰富的现有模板列表涵盖了大量用例,从简单模式到更复杂的模式。

模式中的每个项都由变量组成,这些变量由两侧的 $ 符号限定。

HTML 和 XML 示例

以下示例展示了如何在 HTML 和 XML 代码中使用结构化搜索。

搜索 XML 和 HTML 标签、属性及其值

用于搜索标签的最简单模板是 <$tag$/>

  1. 通过对变量 $tag$ 施加约束,您可以指定要查找的标签。 例如,如果您指定 li ,将会获取所有 li 标签。

  2. 请考虑以下用于在 XML 和 HTML 中进行搜索的模板: <$tag$ $attribute$=$value$ />。 例如,若为变量 $attribute$ 指定文本过滤器 id ,并为变量 $value$ 的文本过滤器指定正则表达式 \d+ ,则可以找到所有在 id 属性中具有数字值的标签。

    搜索具有数字 id 的 li 标签

删除 id 属性大于 2 的所有行

  1. 创建一个 HTML 文件,并粘贴以下代码:

    <!doctype html> <html> <head> <title>Structural Search Example</title> <body> <ul> <li id="1">Example line 1</li> <li id="2">Example line 2</li> <li id="3">Example line 3</li> <li id="a">Example line a</li> <li id="5">Example line 5</li> </ul> </body> </html>
  2. 在主菜单中,转到 编辑 | 查找 | 按结构搜索

  3. 语言(L) 列表中,选择 HTML

  4. 将以下字符串粘贴到 搜索模板 字段:

    <$tag$ $attribute$="$value$">
  5. 点击变量 $tag$

  6. 在过滤器面板中,点击 添加修饰符 ,选择 文本 ,并在值字段中输入 li

    如果过滤器面板不可见,请点击 切换修饰符面板

    切换过滤器面板
  7. 点击变量 $attribute$

  8. 在过滤器面板中,点击 添加修饰符 ,选择 文本 ,并在值字段中输入 id

  9. 点击变量 $value$

  10. 在过滤器面板中,点击 添加修饰符 ,选择 文本 ,并在值字段中输入 \d+

    正则表达式 \d+ 将搜索结果限制为数字值。 因此,包含 id="a" 的行将被过滤掉。

  11. 在不离开过滤器面板焦点的情况下,点击 添加 按钮,选择 脚本 ,并粘贴以下代码:

    value.getText().replaceAll (/"/, '').toInteger() > 2

    脚本读取变量 $value$ 的内容,并将其作为字符串返回(例如, "1")。 然后,脚本会替换所有引号,将字符串值转换为整数,并与 2 进行比较。

    删除 id 大于 2 的行

将 li 标签中 class 属性的全大写值转换为小写

  1. 创建一个 HTML 文件,并粘贴以下代码:

    <!doctype html> <html> <head> <title class="EXAMPLE">Structural Replace Example</title> <body> <ul> <li class="EXAMPLE">Example line 1</li> <li class="example">Example line 2</li> <li class="EXAMPLE">Example line 3</li> <li class="example">Example line a</li> <li id="EXAMPLE">Example line 5</li> </ul> </body> </html>
  2. 在主菜单中,转到 编辑 | 查找 | 结构化替换

  3. 语言(L) 列表中,选择 HTML

  4. 将以下字符串粘贴到 搜索模板 字段:

    <$tag$ $attribute$="$value$">
  5. 选中 区分大小写(C) 复选框。

  6. 点击变量 $tag$

  7. 在过滤器面板中,点击 添加修饰符 ,选择 文本 ,并在值字段中输入 li

  8. 点击变量 $attribute$

  9. 在过滤器面板中,点击 添加修饰符 ,选择 文本 ,并在值字段中输入 class

  10. 点击变量 $value$

  11. 在过滤器面板中,点击 添加修饰符 ,选择 文本 ,并在值字段中输入 [A-Z].*

    正则表达式 [A-Z].* 将搜索结果限制为全大写值。

  12. 目标(T) 列表中,选择 。 此过程会高亮显示 class 属性的所有全大写值。

  13. 替换模板 字段中,粘贴 $to_lower_case$ 变量。

  14. 点击变量 $to_lower_case$

  15. 在过滤器面板中,点击 添加修饰符 ,选择 脚本 ,并粘贴以下代码:

    value.getText().toLowerCase()
    按结构替换目标
  16. 点击 查找

  17. 查找 工具窗口中,预览找到的结果并点击 全部替换(A)

    find.replace.all.action
最后修改日期: 2025年 12月 2日