2017-02-05 2 views
1

Добрый день Ребята,Как выполнить регистронезависимое согласование на Уотсона Dialog input.text

Пожалуйста, как я могу выполнить регистронезависимое согласование на текст, который я читал из пользовательского ввода? я заметил, что этот фрагмент кода

"context": { 
     "number_extract": "<? input.text.extract('my name is ([\\w\\s\\w]*)', 1) ?>" 
     } 

не будет совпадать, если пользователь вводит Меня зовут .......

Также, пожалуйста, может кто-нибудь также предложить хороший ресурс, который я могу использовать для используя регулярное выражение на экране диалога.

спасибо.

ответ

2

Watson разговор поддерживает SPEL https://www.ibm.com/watson/developercloud/doc/conversation/expression-language.html

Для регулярных выражений вы можете сделать

input.text.matches('[0-9]+') 

я не проверить, но, вероятно, можно сделать

input.text.equalsIgnoreCase('xxxxx') 

Вы также можете сделать

input.text.toUpperCase().matches(YOUR_REGEX) 

Наконец Вы можете использовать следующие (? Я) для случая нечувствительности. См. https://blogs.oracle.com/xuemingshen/entry/case_insensitive_matching_in_java

+0

Хорошо, я посмотрю на этот URL. Но если вы посмотрите на мой пример кода, вы увидите, что получение имени соответствует совпадению так, как я набрал его, то есть маленькими буквами. Но я скоро обновлю, если это сработает. – user980643

+0

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

+0

Я не могу заставить equalsIgnoreCase работать, потому что не очень заинтересованный в выполнении соответствия, это моя проблема. Если вы проверите образец кода в моем исходном сообщении, я пытаюсь восстановить все, что есть после ** моего имени **, проблема в том, как я могу сделать этот текстовый регистр нечувствительным. – user980643