结构搜索和替换示例
最后修改时间:2023 年 9 月 8 日如您所知,常规搜索和结构搜索之间的主要区别在于,在结构搜索中,我们正在寻找编程语言中的结构模板。
结构搜索的优点在于,您可以基于现有模板创建模式,并在搜索和替换代码时节省时间。
现有模板的广泛列表涵盖了从简单模式到更复杂模式的许多用例。
模式中的每个项目都由两侧由 $ 符号限制的变量组成。
HTML 和 XML 示例
以下示例展示了如何在 HTML 和 XML 代码中使用结构搜索。
搜索 XML 和 HTML 标签、属性及其值
搜索标签的最简单模板是<$tag$/>
。
通过对变量设置约束
$tag$
,您可以指定要查找的标签。例如,如果您指定li
,您将获得所有li
标签。请考虑以下用于在 XML 和 HTML 中搜索的模板:
<$tag$ $attribute$=$value$ />
。例如,如果您指定变量id
的文本过滤器$attribute$
,并\d+
指定正则表达式作为变量的文本过滤器$value$
,则可以找到属性中具有数值的所有标签id
。
删除所有id属性大于2的行
创建一个 HTML 文件并粘贴以下代码:
HTML code
{...}转到编辑 | 查找| 结构性搜索。
从语言列表中,选择HTML。
将以下字符串粘贴到搜索模板字段:
<$tag$ $attribute$="$value$">
单击该
$tag$
变量。在过滤器面板中,单击添加修饰符,选择文本
li
并在值字段中键入。如果过滤器面板不可见,请单击“切换修改器面板”图标。
单击该
$attribute$
变量。在过滤器面板中,单击添加修饰符,选择文本
id
并在值字段中键入。单击该
$value$
变量。在过滤器面板中,单击添加修饰符,选择文本
\d+
并在值字段中键入。正
\d+
则表达式将搜索结果限制为数值。因此,带有 的行将id="a"
被过滤掉。在不从过滤器面板切换焦点的情况下,单击“添加”按钮,选择“脚本”并粘贴以下代码:
value.getText().replaceAll (/"/, '').toInteger() > 2
该脚本读取变量的内容
$value$
并将其作为字符串返回(例如,"1"
)。然后脚本替换所有引号并将字符串值转换为整数并与 进行比较2
。
笔记
要在不同选择范围之间切换,请从“目标”列表中选择必要的值。例如,要选择与模板匹配的整行,请选择完全匹配。
将 li 标签中的 class 属性的大写值转换为小写
创建一个 HTML 文件并粘贴以下代码:
HTML code
{...}转到编辑 | 查找| 结构上替换。
从语言列表中,选择HTML。
将以下字符串粘贴到搜索模板字段:
<$tag$ $attribute$="$value$">
选择匹配大小写复选框。
单击该
$tag$
变量。在过滤器面板中,单击添加修饰符,选择文本
li
并在值字段中键入。单击该
$attribute$
变量。在过滤器面板中,单击添加修饰符,选择文本
class
并在值字段中键入。单击该
$value$
变量。在过滤器面板中,单击添加修饰符,选择文本
[A-Z].*
并在值字段中键入。正
[A-Z].*
则表达式将搜索结果限制为大写值。从“目标”列表中,选择“值”。此过程突出显示属性的所有大写值
class
。在替换模板字段中,粘贴
$to_lower_case$
变量。单击该
$to_lower_case$
变量。在过滤器面板中,单击“添加修饰符”,选择“脚本”并粘贴以下代码:
value.getText().toLowerCase()
单击“查找”。
在“查找”工具窗口中,预览找到的结果并单击“全部替换”。
感谢您的反馈意见!