如何组成一个匹配目录中所有文件的正则表达式,但扩展名为.jar的文件除外?

时间:2010-10-31 14:31:52

标签: regex mercurial hgignore

假设我们有下一个目录结构:

/parentdir/
   /childdir/
      child_file1.txt
      child_file2.jar  
   file1.txt
   file2.txt

所以,我们得到下一个完整的文件名:

/parentdir/file1.txt
/parentdir/file2.txt
/parentdir/childdir/child_file1.txt
/parentdir/childdir/child_file2.jar

哪个正则表达式匹配所有这些文件,除了最后一个扩展名为.jar的文件?

一点澄清:表达式可以包含'parentdir'字符串和'.jar'字符串,所有其他文件和目录都可以包含任何名称和扩展名。

2 个答案:

答案 0 :(得分:3)

您可以使用否定断言:/(?<!\.jar)$/

这将匹配任何不以.jar

结尾的内容

答案 1 :(得分:1)

否定断言正则表达式是一种可行的方法,但在多变的情况下更常见的解决方案是广泛忽略(例如忽略parentdir/)然后hg add少数异常文件你不要被忽视。

在svn和cvs中你不能添加一个在你的忽略列表中的文件,如果你确实未来跟踪,那么在mercurial hg add完全覆盖忽略,所以除非你有很多新的将来出现的罐子,只需忽略广泛并添加.jar。