0

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

/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”字符串,所有其他文件和目录可以有任何名称和扩展名。

4

2 回答 2

3

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

这将匹配任何不以 .jar 结尾的内容

于 2010-10-31T14:37:39.077 回答
1

否定断言正则表达式是一种方法,但在多变的土地上更常见的解决方案是广泛忽略(例如只是忽略parentdir/),然后hg add是您不想忽略的少数异常文件。

在 svn 和 cvs 中,您无法添加忽略列表中的文件,并且如果您将来更改不会被跟踪,但在 mercurial 中hg add完全覆盖忽略,所以除非您将来会出现许多新的 jar,只是广泛忽略并添加.jar。

于 2010-10-31T18:03:33.857 回答