2013-09-18 4 views
-3

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

до сих пор у меня есть

private (double|int|char|String|boolean) .+ 

предполагается, что только типы выше, будут использоваться и модификатор только приватным и имя следует стандарт Java именования стандартных и конвенции. однако я не мог понять, как устранить скобки(), поскольку они являются частью регулярного выражения. так как некоторые методы могут быть сопоставлены:

private String regex(){ 
    return "hello"; 
} 

как устранить()? thanks

ответ

3

Вы можете расширить свой .+, чтобы более строго соблюдать Java identifier naming requirements, а затем после этого требуется либо точка с запятой, либо оператор присваивания.

Нечто подобное (грубое приближение к требованиям):

private (double|int|char|String|boolean) \\w+\\s+[=;] 

Однако, вы собираетесь иметь чертовски времени, пытаясь разобрать каждый возможный путь грамматика может быть записана с другого поля модификаторы (transient, final, static), которые могут быть в любом порядке, дженерики и т.д.

Вы, вероятно, хотите, чтобы выяснить, что ваша конечная цель и искать более разумный подход.

+0

: - спасибо, что это уже решило проблему, кстати, как я мог бы реализовать финал как факультативный, я попробовал (окончательный)? но не работает – dhssa

+1

'(final |)' означает «final или nothing». '?' означает 0 или 1 одного символа. Остерегайтесь различного упорядочения ключевых слов. – Nicole

+0

спасибо большое Ник – dhssa

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