2017-06-13 45 views
-1

我使用Ruby on Rails编写了Facebook Messenger ChatBot。在Ruby中解析接收到的消息

我创建了一个响应数据库。如果消息存在于我的数据库中,它会回复,否则回复为“对不起”。

.... 
    def analysis(sender, text) 

    message = Message.where(:recieved => text).first 
    if message 
     reply = message.reply 
    else 
     reply = "Sorry not found" 
    end 
    send_message(sender,reply) 
    end 
    .... 

我想添加类似条件的正则表达式匹配。像这样:如果消息包含“this”这个词。回复“那”。

我该怎么做?

+0

你可以用'包括',这是略快于应用正则表达式'”一个包含bla'.include?('bla')的字符串? do_this:do_another_thing' –

+1

请阅读“[mcve]”。你有什么尝试?向我们展示展示您尝试解决此问题所需的最低代码,并描述它未正确执行的操作。如果没有这些,你会要求我们为你编写代码,或者写一个教程,这两者都是脱离主题的。我建议学习'case' /'when'以及正则表达式是如何工作的。 –

回答

0

我不确定我是否得到了你的意图,但是如果你想在响应中替换出现的模式,你可以使用gsub方法docs

或者干脆使用条件语句来匹配等给出regexs:

if /this/.match(message.reply) 
    reply = 'that' 
1

您可以使用子索引:

definite_article = message.reply['this'] ? 'that' : 'this'