2015-05-02 5 views
1

Я использую Deadbolt2 с play-framework 2.3.x. Когда я пытаюсь получить доступ к контроллеру с объявлением deadbolt Patterns с использованием регулярных выражений. Я получаю ошибку Not-found. According to this sample, в нашем приложении можно использовать регулярные выражения с Pattern. Но когда я объявляю регулярное выражение, я не могу его использовать. Мой код выглядит следующим образом:Playframework with Deadbolt 2: Регулярное выражение шаблона не соответствует

def pattern_one = Pattern("CH{4,}", PatternType.REGEX, new MyDeadboltHandler) {} // NOT ACCESSED 

def pattern_one = Pattern("CH*", PatternType.REGEX, new MyDeadboltHandler) { // NOT ACCESSED 

def pattern_one = Pattern("CHANNEL", PatternType.REGEX, new MyDeadboltHandler) { // ACCESSED SUCCESSFULLY 
+0

Вы имеете в виду узор типа 'CH. {4,}' или 'CH. *'? (Обратите внимание на дополнительное '.' В моем выражении.) Почему вы хотите сопоставить что-то вроде 'CHHHHHHH'? Вы работаете над химическим применением? –

+1

Может ли это быть '.' в регулярных выражениях' CH. {4,} 'и' CH. * '? –

+0

@ GáborBakos его просто создайте для примера приложения, чтобы проверить, как регулярные выражения работают с 'deadbolt'. –

ответ

4

Регулярные выражения не являются подстановочными знаками. Если * подстановочные соответствует чему-либо любое количество раз, в регулярном выражении, вам нужно использовать .*, где . означает любой символ, но символ новой строки и * означает 0 или более раз.

Более того, если вы хотите, чтобы соответствовать всю строку, содержащую слово в строке, начиная с CH, вы можете использовать границу слова, \\b: \\bCH.*.

Если вы хотите указать, что строка должна начинаться с CH и соответствовать всей строке, вы можете использовать ^CH.*.

2

Вы должны использовать CH.* или CH.{4,}, если вы хотите что-то (а не только H сек) после CH. . означает любой символ, как и в любом другом регулярном выражении.

+0

этот ответ уже дал @ Gregor Raýman в вышеприведенных комментариях –

+1

Этот ответ уже был задан мной в приведенных выше комментариях: «CH. {4,}' или 'CH. *'? (Обратите внимание на дополнительные '.' в мое выражение.) «Перед ним. ;) (И это немного более подробно.) –

+0

извините @ Gábor Bakos его моя ошибка –