【问题标题】:How to make up a regexp that matches all files in the directory except for files with .jar extension?如何组成一个匹配目录中所有文件的正则表达式,除了具有 .jar 扩展名的文件?
【发布时间】:2010-10-31 14:31:52
【问题描述】:

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

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

【问题讨论】:

    标签: regex mercurial hgignore


    【解决方案1】:

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

    这将匹配任何不以 .jar 结尾的东西

    【讨论】:

    • 不幸的是它不起作用。我在 mercurials .hgignore 文件中使用它。也许,mercurial 不支持这种类型的正则表达式。
    • 完全有可能,这是一个Perl兼容的正则表达式。我不知道 mercurial 或 hgignore,所以我无法提供更多帮助,抱歉!
    • 它有效,它只需要删除开始和结束斜线,例如"(?
    【解决方案2】:

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

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

    【讨论】:

    • thanx,不知道这个 hg 功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    相关资源
    最近更新 更多