跳转至主要内容

模式匹配

Overview / 规格 / 增强 / 模式匹配



描述#

如果某些文件应与(或从) 其他设备同步,配置相应的 SyncFilePattern/IgnorereFilePattern。 所有模式都相对于文件夹根目录(你在进入 DevMode 时选择的文件夹)。

Caution

The priority of the IgnoreFilePattern is higher than SyncFilePattern, so if your pattern both covered the same file, the file will be ignored.

匹配模式语法#

  • 常规文件名匹配本身,即:模式 foo 匹配文件 foo, subdir/foo 以及名为 foo 的目录。 空格被当作普通字符处理,但前导和尾随空格除外,后者自动 trimmed。

  • 星号 (*) 匹配文件名中的零或更多字符,但与目录分隔符不匹配。 te*ne 匹配 telephone, subdir/telephone 但不是 tele/phone

  • 双星号 (**) 和上面相同,但匹配目录分隔符。 te**ne 匹配 telephonesubdir/telephonetele/sub/dir/phone

  • 问号 (?) 匹配非目录分隔符的单个字符。 te??st 匹配 tebest 但不匹配 teb/sttest

  • 方括号 ([…]) 表示字符范围: [a-z] 匹配任何小写字符。

  • 粗括号 ({}) 表示一组逗号分隔的替代品: {banana,pineapple} 匹配 bananapinepele

  • 反斜杠 (\) “逃避”一个特殊的字符,使它失去了它的特殊含义。 例如, \{banana\} 匹配 {banana} 并且不表示上面的一组例子。 Windows不支持转义字符。

  • /./ 开头的模式只匹配文件夹的根目录中。 /foo or ./foo 匹配 foo 但不匹配 subdir/foo.

  • (?i) 前缀开头的模式允许大小写不敏感的模式匹配。 (?i)test 匹配 testTESTtEsT(?i) 前缀可以与其他模式合并,例如图案 (?i)picture*.png 表示 Picture1.PNG 应同步。 在 Mac OS 和 Windows 中,模式匹配总是不区分大小写。

Note

Prefixes can be specified in any order (e.g. “(?i){foo,bar}/*/bar”), but cannot be in a single pair of parentheses (not "{foo,(?i),bar}/*/bar").

示例#

Given a directory layout:

.DS_Store
foo
foofoo
bar/
baz
quux
quuz
bar2/
baz
frobble
My Pictures/
Img15.PNG
nocalhost/
hello
test/
team/

and with following config:

SyncFilePattern:
- frobble
- quuz
- ./nocalhost
IgnoreFilePattern:
- foo
- *2
- qu*
- (?i)my pictures
- nocalhost/t**

The priority of the IgnoreFilePattern is higher than SyncFilePattern and the end result becomes:

foo # 忽略,匹配 IgnoreFilePattern "foo"
foofoo # 同步,不匹配 IgnoreFilePattern "foo",并且匹配 "foo*" or "*foo"
bar/ # 同步,没有相关的配置
baz # 同步,没有相关的配置
quux # 忽略, 匹配 IgnoreFilePattern "qu*"
quuz # 忽略,虽然指定了 SyncFilePattern "quuz",但也匹配了更高优先级的 IgnoreFilePattern "qu*"
bar2/ # 忽略, 匹配 IgnoreFilePattern "*2"
baz # 忽略,因为父目录被忽略了
frobble # 忽略,因为父目录被忽略了
My Pictures/ # 忽略, 匹配 IgnoreFilePattern case insensitive "(?i)my pictures" 的模式
Img15.PNG # 忽略,因为父目录被忽略了
nocalhost/ # 同步,没有相关的配置
hello # 同步,没有相关的配置
test/ # 忽略,匹配 IgnoreFilePattern "nocalhost/t**"
team/ # 忽略,匹配 IgnoreFilePattern "nocalhost/t**"