在IBM Watson聊天机器人上,我创建了2个实体,一个实体名为@serial_number,另一个名为@material_number。
序列号的格式为(\d{7,9})-(\d{2,4})-(\d{1,3})
物料编号的模式为(\d{3}).(\d{3}).(\d{3}).(\d{3})
。
在“欢迎”节点中,机器人会询问用户的名称,如果机器人在下面的节点中识别出该名称,则它还会搜索其他类型的输入。我希望机器人能够从输入中捕获序列号和物料号。因此,我激活了插槽模式,然后添加了两个带有变量$ serialnumber和$ materialnumber的插槽。对于它们的两个值,我都使用了“文字”功能,以便机器人可以将用户的输入存储到上下文变量中。
当输入诸如“你好,我是Henrik。我有一支笔。其序列号是1234567-123-12,材料编号是123.123.123.123”时,机器人的响应如下: :
“好的,序列号是1234567-123-12”
“好的,物料号是1234567”
它根据提供的模式正确捕获序列号。然而,但是它弄错了材料编号。它应捕获的物料编号为 123.123.123.123 ,但即使为@material_number提供的模式中不存在此类模式,它也捕获 1234567 。
我某种程度上需要使机器人捕获正确的东西。
如果有人可以帮助我,我将非常高兴。预先感谢。
答案 0 :(得分:1)
这是因为正则表达式中的.
与任何字符匹配。如果要指定文字.
,则需要在表达式中对其进行转义。即。
(\d{3})\.(\d{3})\.(\d{3})\.(\d{3})