【发布时间】:2014-03-18 01:54:04
【问题描述】:
我一直在思考这个问题。
我有一个庞大的 Maven 多模块项目,并使用构建工具为所有模块共享一组自定义规则(这里没问题)。
当我只想将一条规则应用于其中一个模块中的一组文件时,问题就出现了。通过使用 checkstyle 抑制文件,我可以轻松排除我不希望应用规则的所有文件,但它有其局限性。让我们举个例子:
文件:
a/b/c/d/FileImpl.java
a/b/c/d/File.java
a/b/c/d/e/FileImpl.java
a/b/c/FileImpl.java
...
你会写什么正则表达式来保证所有文件(包括将来可能引入的文件)都被排除在外,但只是那些在包 a.b.c.d 下以 Impl.java 结尾的文件? 就正则表达式而言,它必须是匹配除我想要的文件结尾之外的任何内容的正则表达式。
如果我可以只设置一个“包含”,仅指要应用规则的文件集,那会更容易,但据我所知,这是不可能的。它必须使用抑制功能,以便抑制除我想要的文件之外的所有文件。
我曾尝试使用捕获组、前瞻和后瞻,但完全没有成功。
有什么想法吗?
【问题讨论】:
-
你有没有尝试过?请附上您尝试的解决方案...这可以帮助其他人了解您的意图。
-
嗨,阿迪,我正在尝试制作一个通用正则表达式,它匹配除了一个以 d/FileImpl.java 结尾的链之外的所有内容,以便 Checkstyle 抑制排除所有文件,但不匹配的文件正则表达式。类似于:.+(?!d/FileImpl.java$)
-
@xOUe 将您的解决方案作为答案发布(并且可能会接受),不要将其编辑到您的问题中。在这里发布您自己问题的答案是完全有效的!
-
新手有限制,不能在8小时前回答我自己的问题...否则我会做的,还是谢谢你!
标签: regex checkstyle