我想尽量简明扼要地问这个问题,请原谅我,如果我要留下一些东西。我希望表达式匹配所有情况,除非存在确切的文件名字符串。
我使用的备份软件使用正则表达式,我想设置一个排除项以跳过所有特定的文件扩展名类型,但我需要备份某些文件,所以我不想要它们匹配。
我要排除的文件是我们在这个例子中说的。* FLV
(?i).*\.flv
我想在备份中包含三个文件:abc123.flv,ghk432.flv和fdw917.flv
这就是我遇到麻烦的地方,即使只包含三个要包含在备份中的文件
(?i).*\.flv^(?!(abc123\.flv))&
该表达式被添加到code42 CrashPlan备份的排除列表中,遗憾的是它们的支持无法帮助处理复杂的RegEx表达式。
我能提供的最接近的例子是他们的示例3:使用排除包括:
.*/Documents/((?!(.*\.(doc|rtf)|.*/)$).)*$
http://support.code42.com/Administrator/3.6_And_4.0/Configuring/Using_Include_And_Exclude_Filters
但是它排除了名为" Documents"的目录中的所有文件。并包含doc或rtf文件扩展名的那些文件夹中的所有文件。我试图创建一个使用文件扩展名的表达式,而不管文件夹位置如何。
在我的大脑逻辑上似乎我需要把它写成某种其他语句,但正则表达式不是我的强项。
答案 0 :(得分:0)
尝试将否定前瞻放在路径中文件名的位置:
^([^/]*/)*(?!(abc123|ghk432|fdw917)\.flv$)[^/]*\.flv$
答案 1 :(得分:0)
使用锚定的负面向前看,替换要保留的文件:
^(?i)(?!.*(abc123|ghk432|fdw917)\.flv).*\.flv
否定前瞻断言以下输入不与其正则表达式匹配,而管道字符表示"或"。