正则表达式捕获不以特殊单词开头的布尔变量

时间:2014-12-15 12:52:03

标签: regex

我想要做的是捕获布尔变量,这些变量不会在我们的代码中对我们的标准进行确认,并使用Checkstyle打印错误消息。

// Things that should be matched

private boolean test;
private boolean        test;
private boolean mtest;

boolean test;
boolean     test;

// Things that should not be matched

private boolean isTest;
private boolean        isTest;
private boolean mIsTest;

boolean isTest;
boolean     isTest;

public boolean test() // No functions at all should be matched

我目前使用的正则表达式就是这个:

(B|b)oolean[\s]+(?!(mC|c)an|(mS|s)hould|(mA|a)re|(mD|d)id|(mI|i)s|(mM|m)ust|(mH|h)as|(mW|w)as)

有些东西已经有效了,有些东西还没有。 Here是指向网站的链接,即测试用例和正则表达式。

在变量之前和/或具有函数的情况下应用空格时,是否有人知道如何解决这种奇怪的情况?

3 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式:

(B|b)oolean\s+(?=\S)(?!(mC|c)an|(mS|s)hould|(mA|a)re|(mD|d)id|(mI|i)s|(mM|m)ust|(mH|h)as|(mW|w)as)(?!.+\(.*\))

我添加了(?=\S)以确保\s+匹配所有空格,并(?!.+\(.*\))排除功能。

答案 1 :(得分:1)

为非空白(?=\S)添加正向前瞻以停止回溯,以允许匹配您期望变量名称的第一个字符的最后一个空白,并向前添加另一个字词以排除在任何地方提前...|.*\()

(B|b)oolean\s+(?!(mC|c)an|(mS|s)hould|(mA|a)re|(mD|d)id|(mI|i)s|(mM|m)ust|(mH|h)as|(mW|w)as|.*\()(?=\S)

请参阅live demo

另请注意删除\s周围不必要的方括号。

答案 2 :(得分:0)

(b)oolean\s+?[a-z]+?;

http://www.regexr.com/3a33d

也许我错了,但似乎你已经过度复杂了。

使用此输入,您只需忽略变量名称是否为大写。