Kar*_*ter 9 java regex checkstyle maven
我在例如,在模块中指定()?包含换行符(\n)的正则表达式组()时遇到问题RegexpHeadermaven-checkstyle-plugin
<module name="Checker">
<module name="RegexpHeader">
<property
name="header"
value="a\nb"/>
<property name="fileExtensions" value="java"/>
</module>
</module>
Run Code Online (Sandbox Code Playgroud)
哪里value="a(\nc)?b"失败有错误Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:2.17:check (check_style) on project document-scanner: Failed during checkstyle configuration: cannot initialize module RegexpHeader - Cannot set property 'header' to 'a(\nc)?b' in module RegexpHeader: InvocationTargetException: line 1 in header specification is not a regular expression -> [Help 1].
各个标题行必须用字符串"\n"分隔
这解释了正则表达式导致错误,但它阻止了使用包含换行符的可选组的正则表达式的规范.此例的示例也未指定.
解决方案不起作用:
\n为\\n和\\\n不起作用(导致与上面相同的错误).value="/*a(\x10c)?b*/\n" 匹配以.开头的文件
/*ab*/
bla bla
Run Code Online (Sandbox Code Playgroud)
但不是
/*a
cb*/
bla bla
Run Code Online (Sandbox Code Playgroud)checkstyleXML文件中添加简单换行符 或\x0A换行换行符value="/\*a cb\*/\n" 火柴
/*a
cb*/
bla bla
Run Code Online (Sandbox Code Playgroud)
所以它似乎是正则表达式控制字符(()?)导致麻烦.
我正在使用maven-checkstyle-plugin2.17和Java 7.
我创建了https://github.com/krichter722/maven-checkstyle-plugin-multiline以便于调查.
尝试多行模式,其中^并匹配每行$的开始/结束:
(?m)a($\s+^c)?b
Run Code Online (Sandbox Code Playgroud)
您可能需要尝试一下如何编写反斜杠代码。