规则引擎 DSL 参考
RuleDock 的领域特定语言(DSL)允许您使用可读的表达式创建强大的分类规则。本参考涵盖所有可用的运算符和模式。
概述
DSL 表达式评估桌面图标的属性并返回 true 或 false。如果为 true,图标将被分类到目标围栏中。
基础示例
ext == '.png'
这将匹配任何扩展名为 .png 的文件。
可用属性
您可以引用每个桌面图标的这些属性:
| 属性 | 描述 | 示例值 |
|---|---|---|
ext |
文件扩展名(包括点) | .png, .docx, .exe |
name |
文件名(不含路径) | 截图_2026.png |
path |
完整文件路径 | C:\Users\张三\Desktop\文件.txt |
比较运算符
相等 (==)
检查属性是否精确等于某个值。不区分大小写。
ext == '.PDF' # 匹配 .pdf, .PDF, .Pdf 等
name == 'readme.txt'
不等 (!=)
检查属性是否不等于某个值。
ext != '.tmp' # 排除临时文件
path != 'C:\Windows'
包含 (contains)
检查属性是否包含子字符串。不区分大小写。
name contains '备份' # 匹配 "备份.zip", "我的备份_2026.rar"
path contains '项目'
在列表中 (in [...])
检查属性是否匹配列表中的任何值。
ext in ['.jpg', '.png', '.gif', '.webp'] # 图片文件
ext in ['.doc', '.docx', '.pdf'] # 文档
逻辑运算符
与 (and)
两个条件都必须为真。
ext == '.png' and path contains '截图'
# 匹配: C:\Users\截图\image.png
# 不匹配: C:\Users\文档\image.png
或 (or)
任一条件为真即可。
ext == '.exe' or ext == '.msi'
# 匹配: setup.exe, install.msi
组合 AND 和 OR
AND 的优先级高于 OR。复杂表达式请谨慎使用:
# 这意味着: (A AND B) OR C
ext == '.png' and name contains '截图' or ext == '.gif'
字符串引号
值可以用单引号或双引号:
name contains "我的文件" # 双引号
name contains '我的文件' # 单引号
ext == .txt # 无引号(简单值)
当值包含空格或特殊字符时使用引号。
正则表达式规则类型
对于超越 DSL 的模式匹配,请使用 正则表达式 规则类型(不是表达式运算符)。这将对文件名应用正则表达式模式。
正则表达式示例
# 匹配 "截图_20260205_123456.png"
^截图_\d{8}_\d{6}\.png$
# 匹配版本模式如 "app_v2.1.exe"
_v\d+\.\d+\.exe$
# 匹配以 "备份" 或 "归档" 开头的文件
^(备份|归档)
# 匹配任何编号文件
\(\d+\)\.[a-z]+$ # 例如 "文件 (1).txt"
正则表达式安全
所有正则表达式模式的评估都有:
- 默认不区分大小写匹配
- 200毫秒超时以防止灾难性回溯(ReDoS)
- 超时的模式会被静默跳过
完整示例
分类设计文件
目标:"设计"围栏
ext in ['.psd', '.ai', '.xd', '.fig', '.sketch']
分类开发文件
目标:"代码"围栏
ext in ['.js', '.ts', '.py', '.cs', '.java', '.cpp', '.h']
分类项目截图
目标:"项目截图"围栏
ext in ['.png', '.jpg'] and path contains '项目'
分类工作文档(排除个人)
目标:"工作文档"围栏
ext in ['.doc', '.docx', '.pdf'] and path contains '工作'