gpt4 book ai didi

java - 正则表达式适用于在线 validator ,但在 java checkstyle 中失败

转载 作者:行者123 更新时间:2023-11-30 06:07:41 28 4
gpt4 key购买 nike

我目前第一次使用 checkstyle 并遇到了一些问题。我希望 checkstyle 能够验证包声明和后续内容之间是否有一个空行。我找不到提供这种验证的模块,或者至少没有一个模块不检查包声明和上面的内容之间是否有空行。

所以我决定使用 regexp-module 并编写一个正则表达式来实现这种验证。我试图涵盖所有可能违反我的规则的情况,并且在一些在线 validator 中,您可以在其中尝试您的正则表达式,它没有任何问题。

这是正则表达式:

.+package.*;|package.*;.*\S|package.*;.*[\r\n].*\S|package.*;[\r\n]{3,}

现在,当我尝试将其导入到我的检查配置中时,我总是收到消息即使代码是正确的,我的规则也被违反了。

这里是一些示例代码:

package just.some.package;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Query;
...

通常情况下,这段代码不会触发任何问题,但只要我在 IDE 中的 checkstyle 插件中尝试它,它总是会触发任何问题。导致问题的正则表达式片段似乎是这个:

package.*;(\r|\n){3,}

它应该只检查包声明后是否有两个以上的换行符,但如果恰好有两个换行符(如示例中所示),它也会触发错误。

有人可以解释一下问题是什么吗?

致以诚挚的问候

德姆利

最佳答案

您可以使用 \R construct匹配换行符,

package.*;\R{3,}

[\r\n]{3,}(\r|\n){3,} 都匹配,因为您有 CRLF 结尾,这意味着有两行之间有 4 个 CR/LF 字符,以空行分隔。

或者,如果您使用 Windows 行结束样式,则可以指定 (?:\r\n){3,} 模式。

关于java - 正则表达式适用于在线 validator ,但在 java checkstyle 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50949562/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com