Playframework с Deadbolt 2: шаблонное регулярное выражение не совпадает

Я использую Deadbolt2 с play-framework 2.3.x, Когда я пытаюсь получить доступ к контроллеру с объявить Deadbolt Patterns используя регулярные выражения. я получаю Not-found ошибка. Согласно этому образцу, можно использовать регулярные выражения с Pattern в нашем приложении. Но когда я объявляю регулярное выражение, я не могу его использовать. Мой код выглядит так:

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

2 ответа

Решение

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

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

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

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

Другие вопросы по тегам