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
。