我正在尝试编写一个hubot脚本来回答两种不同的输入。用户可以输入本地公共传输的停止名称,也可以选择后缀延迟。
因此,第一个选项的输入可以是dvb zellescher weg
或dvb albertplatz
,第二个选项可以是dvb zellescher weg in 5
或dvb albertplatz in 10
。 (“dvb”这里是我的脚本的关键字,“zellescher weg”和“albertplatz”是停止名称的两个例子)
在试图将这些与正则表达式相匹配时,我遇到了一个问题,即我必须在不同的测试站点上工作的正则表达式(如regex101,这似乎是推荐在这里并做JS)在我的代码中不起作用。匹配没有数字的输入的正则表达式是/^dvb (\D*)$/
,我使用/dvb\s+(.*)in (\d*)/
来匹配用户输入延迟的情况。
我的hubot的最小代码示例由于我不知道的原因而不匹配,如下所示:
robot.respond /^dvb (\D*)$/, (res) ->
hst = res.match[1]
res.send hst
感谢您的帮助。
#Public:添加一个侦听器,尝试匹配指向的传入消息 #在基于正则表达式的机器人上。所有正则表达式都会像开始那样处理模式 #与
'^'
来自respond
的正则表达式转向respondPattern
,逃离^
并警告不要使用锚点:
if re[0] and re[0][0] is '^'
@logger.warning \
"Anchors don't work well with respond, perhaps you want to use 'hear'"
因此,您需要删除^
,或使用不使用任何“智能”正则表达式预处理的.hear
方法:
hear: (regex, options, callback) ->
@listeners.push new TextListener(@, regex, options, callback)