如何构造一个regexp来匹配目录中除扩展名为.jar的文件之外的所有文件?
假设我们有下一个目录结构:如何构造一个regexp来匹配目录中除扩展名为.jar的文件之外的所有文件?,regex,mercurial,hgignore,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 除了最后
/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”字符串,所有其他文件和目录都可以有任何名称和扩展名。您可以使用否定断言:
/(?)
这将匹配任何不以.jar结尾的内容您可以使用否定断言:/(?)
这将匹配任何不以.jar结尾的内容,否定断言regex是一种方法,但在mercurial land中更常见的解决方案是广泛忽略(例如忽略parentdir/
),然后添加hg
您不希望忽略的少数异常文件
在svn和cvs中,你不能添加一个在忽略列表中的文件,如果你这样做了,将来的更改将不会被跟踪,但是在mercurial中,add将完全覆盖ignore,因此除非你将来会出现很多新的jar,否则只需广泛地忽略并添加.jar即可。否定断言regex是一种方法,但更常见mercurial land的解决方案是广泛忽略(例如,只需忽略parentdir/
),然后hg add
不希望忽略的少数异常文件
在svn和cvs中,你不能添加一个在忽略列表中的文件,如果你这样做了,未来的更改将不会被跟踪,但是在mercurialhg add
中,完全覆盖忽略,所以除非你将来会出现很多新的jar,否则只需广泛忽略并添加.jar。不幸的是,它不起作用。我在mercurial.hgignore文件中使用它。也许,mercurial不支持这种类型的正则表达式。这是完全可能的,它是一个Perl兼容的正则表达式。我不知道mercurial或hgignore,所以我无法提供更多帮助,抱歉!它可以工作,只需要删除开头和结尾的斜杠,例如。“(?不幸的是,它不起作用。我在mercurial.hgignore文件中使用了它。也许,mercurial不支持这种类型的正则表达式。这完全有可能,它是一个Perl兼容的正则表达式。我不知道mercurial或hgignore,所以我帮不上什么忙,抱歉!它起作用了,它只需要删除开头和结尾的斜杠,例如。“(?thanx,不知道此hg功能。thanx,不知道此hg功能。