在 checkstyle 中反向正则表达式

Reverse regexp in checkstyle

我正在尝试添加一个检查样式,它将限制 android 字符串资源中的符号数量。我正在使用 RegexpSingleLine(也尝试过使用 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>

根据您的问题,我假设您想标记长度不超过 5-10 个字符的字符串。使用 Checkstyle,您必须找到执行此操作的正则表达式。此检查没有 "invert" 选项。

应该这样做 (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>