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,}
если вы хотите что-то (не только H
s) после CH
, .
означает любой символ, как и в любом другом регулярном выражении.