Регулярное выражение Freemarker не подходит для всех строчных подстрок - PullRequest
0 голосов
/ 06 марта 2019

Итак, я следую инструкциям пользователя, которые кажутся простыми, поэтому я не уверен, что именно я делаю неправильно.Я хочу использовать встроенную функцию matches, чтобы найти все строчные слова в строке.Итак, взяв пример прямо из документации, в мой код (с некоторыми очевидными изменениями), я всегда получаю вывод Does not match.Любая помощь очень ценится:

<#assign res = "<UPPERCASE_WORD<lowercase_word>>"?matches("[a-z]+")>
  <#if res>
     Matches
  <#else>
     Does not match
  </#if>

Одна вещь, которую я заметил между моим кодом и документами, состоит в том, что в примере есть пробелы, а у меня нет, но я сомневаюсь, что это проблема быстрого теста с< >, замененный пробелами, не показывает разницы.Я думал, что регулярное выражение неверно или не поддерживается Freemarker, но документы напрямую ссылаются на OracleRegexPattern docs , так что я думаю, что все в порядке.

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Если вы хотите проверить, содержит ли строка [a-z] где-то , то регулярное выражение должно быть ".*[a-z]+.*", потому что ?matches проверяет, соответствует ли шаблон целом строка.

0 голосов
/ 06 марта 2019

Не используйте совпадения , если вы не ожидаете точного совпадения:

Эта встроенная функция определяет, соответствует ли строка точно шаблону

Если вы знаете точный регулярное выражение, используйте его,

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

?matches("[a-z]+[A-Z]+")>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...