模式中的正则表达式否定

egl*_*ter 2 regex checkstyle regex-negation

我试图在模式中定义一个带有否定的正则表达式模式.我想在最后用'Test'排除所有字符串.我知道字符否定[^Test]但这不是我正在寻找的,[^Test]等于[^estT].它应该传递字符串,UserService而不是UserServiceTest.所以我所做的是将其排除在外{min,max}.但它不起作用:(.

^([a-zA-Z0-9]+(Test){0,0})$
Run Code Online (Sandbox Code Playgroud)

我的主要想法是将此模式放入checkstyle抑制配置中,并从checkstyle检查中排除所有Test类.

<module name="TreeWalker">
  <property name="tabWidth" value="4"/>
  <module name="TypeName">
    <property name="format" value="([a-zA-Z0-9]+(Test){0,0})"/>
  </module>
</module>
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这个问题?

干杯,

凯文

rob*_*ert 6

你需要使用负面的lookbehind断言.

^([a-zA-Z0-9]+(?<!Test))$
Run Code Online (Sandbox Code Playgroud)

请注意,并非所有正则表达式引擎都支持lookbehind.