在checkstyle中反向regexp

时间:2016-11-14 13:50:30

标签: android regex reverse checkstyle

我正在尝试添加一个checkstyle,它将限制android字符串资源中的符号数。我正在使用RegexpSingleLine(也尝试使用Regexp),并且已经有一个regexp表达式。现在的问题是,当字符串中的符号数在范围内时它会断言,但是当数字超出范围时,我需要断言相反的情况。所以我需要以某种方式反转表达式(或者使用某些属性)。有人可以帮忙吗? 这是我的支票。

<module name="RegexpSingleline">
        <property name="fileExtensions" value="xml"/>
        <property name="format" value='^\s*&lt;string\s*name="string_name"&gt;(.{5,10})&lt;'/>
</module>

1 个答案:

答案 0 :(得分:1)

我从你的问题中假设你要标记长度不是5-10个字符的字符串。使用Checkstyle,您必须找到一个正则表达式。此检查没有“反转”选项。

这应该这样做(explanation):

<module name="RegexpSingleline">
    <property name="fileExtensions" value="xml"/>
    <property name="format"
        value='^\s*&lt;string\s*name="string_name"&gt;(?![^&lt;]{5,10}&lt;)([^&lt;].*?)&lt;'/>
</module>

以上内容与空字符串不匹配。如果您还需要标记空字符串,请使用此(explanation):

<module name="RegexpSingleline">
    <property name="fileExtensions" value="xml"/>
    <property name="format"
        value='^\s*&lt;string\s*name="string_name"&gt;(?:&lt;|(?![^&lt;]{5,10}&lt;)([^&lt;].*?)&lt;)'/>
</module>