Jas*_*n S 43 regex mercurial hgignore
我需要一个.hgdontignore文件:-)来包含某些文件并排除目录中的所有其他内容.基本上我想只在特定目录中包含.jar文件而不包含任何其他内容.我怎样才能做到这一点?我不熟悉正则表达式语法.或者我可以使用glob语法吗?(我更喜欢可读性)
就像一个示例位置,假设我想要排除foo/bar/除以外的所有文件foo/bar/*.jar.
Ry4*_*ase 42
迈克尔的答案很好,但另一种选择是排除:
foo/bar/**
Run Code Online (Sandbox Code Playgroud)
然后手动添加.jar文件.您始终可以添加被忽略规则排除的文件,并覆盖忽略.您只需记住添加您将来创建的任何罐子.
Mic*_*oie 37
为此,您需要使用此正则表达式:
foo/bar/.+?\.(?!jar).+
Run Code Online (Sandbox Code Playgroud)
说明
你告诉它要忽略什么,所以这个表达式正在搜索你不想要的东西.
正则表达式很容易搞砸,所以我强烈建议您使用像Regex Buddy这样的工具来帮助您构建它们.它会将正则表达式分解为简单的英语,这确实有帮助.
编辑
嘿Jason S,你抓住了我,它确实错过了那些文件.
此更正的正则表达式适用于您列出的每个示例:
foo/bar/(?!.*\.jar$).+
Run Code Online (Sandbox Code Playgroud)
它发现:
但是找不到
新解释
这表示在"foo/bar /"中查找文件,如果有零个或多个字符后跟".jar",然后再没有更多字符($表示行尾),则不匹配,如果不是'在这种情况下,匹配以下任何字符.