2016-11-14 4 views
0

Я пытаюсь добавить контрольный стиль, который ограничит количество символов в ресурсе строки андроида. Я использую RegexpSingleLine (также пытался с Regexp) и уже имеет выражение regexp. Теперь проблема заключается в том, что он утверждает, когда количество символов в строке находится в диапазоне, но мне нужно утверждать в противоположном случае, когда число находится за пределами диапазона. Поэтому мне нужно каким-то образом изменить выражение (или, возможно, использовать какое-то свойство). Может ли кто-нибудь помочь? Вот мой чек.Обратное regexp в 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 * имя = "string_name" > ([^ <] {0, 4} | [^ <] {11,}) < ''. –

+0

Благодарим за отзыв. Я попытался, но теперь он просто принимает все :) –

+0

Если вы скопировали/вставили регулярное выражение из комментария, оно может содержать искаженные символы. Попробуйте [здесь] (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

Наконец-то! Это работает так, как я хотел. Спасибо за помощь. Также возможно игнорировать escape-символ в строке? –

+0

Я бы предположил, что это тоже возможно, но для этого требуется некоторое возиться с еще более сложным регулярным выражением. Однако вы можете задать это как новый вопрос. –

 Смежные вопросы

  • Нет связанных вопросов^_^