跳到主要内容

match & imatch

match 表达式对文件的基本名称执行 glob 样式的匹配,如果匹配成功,则评估为 true。

["match", "*.txt"]

您可以选择提供第三个参数,以将匹配范围从基本名称更改为文件的完整名称。

["match", "*.txt", "basename"]
["match", "dir/*.txt", "wholename"]

区分大小写

match 区分大小写;对于不区分大小写的匹配,请改用 imatch;它的行为与 match 相同,只是匹配时忽略大小写。

自 2.9.9 起。

在监视根目录是不区分大小写的文件系统的系统上(这是 macOS 和 Windows 的常见情况),match 等同于 imatch

自 4.7 起。

您可以通过在查询中设置 case_sensitive 字段来覆盖查询中使用的所有名称匹配操作的区分大小写。

wildmatch

自 3.7 起。

match 表达式已按照下述方式增强。与此增强功能关联的功能名称是 wildmatch

如果要递归匹配目录下的所有文件,请将 ** glob 运算符与 wholename 范围一起使用

["match", "src/**/*.java", "wholename"]

默认情况下,名称以 . 开头的路径不包括在内。要更改此行为,您可以选择提供第四个参数,其中包含一个标志字典

["match", "*.txt", "basename", {"includedotfiles": true}]

默认情况下,模式中的反斜杠会转义下一个字符,因此 \* 匹配文字 * 字符。 要更改此行为,以便将反斜杠视为文字,请在标志字典中将 noescape 标志设置为 true。(请注意,\\ 是 JSON 表示法中的文字 \

["match", "*\\*.txt", "filename", {"noescape": true}]

匹配 a\b.txt