2016-11-14 18 views
0

私はアンドロイド文字列リソースのシンボルの数を制限するcheckstyleを追加しようとしています。私はRegexpSingleLine(Regexpでも試してみました)を使っていて、すでに正規表現を持っています。今問題は、stringの中のシンボルの数が範囲内にあるときにアサートすることですが、その数が範囲外である場合、逆のケースでアサートする必要があります。だから、私は何とか式を逆にする必要があります(または、おそらくいくつかのプロパティを使用する)。助けてもらえますか? ここに私の小切手があります。checkstyleの逆正規表現

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

は '値= '^ \ sの* <文字列\ S *名= "string_name" >([^ <] {0を、試してみてください4} | [^ <] {11、})< '' –

+0

ありがとうございました。私は試しましたが、今ではすべてを受け付けています:) –

+0

コメントから正規表現をコピー/貼り付けた場合、文字化けした文字が含まれている可能性があります。 [here](https://regex101.com/r/BV1Of1/1)から試してみてください –

答えて

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> 
+0

最後に!これは私の望むように機能します。ご協力ありがとうございました。また、文字列のエスケープ文字を無視することは可能ですか? –

+0

私はそれも可能だと思いますが、それはさらに複雑な正規表現でいくつかの手抜きを必要とします。あなたはそれを新しい質問として尋ねることができます。 –