规则引擎 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 '工作'

下一步