我正在尝试编写一个hubot脚本来回答两种不同的输入。用户可以输入本地公共(public)交通工具的站点名称,也可以选择后缀后缀。
因此,对于第一个选项,输入可以是dvb zellescher weg
或dvb albertplatz
,对于第二个选项,输入可以是dvb zellescher weg in 5
或dvb albertplatz in 10
。
(“dvb”是我的脚本的关键字,“zellescher weg”和“albertplatz”是停止名称的两个示例)
在尝试将它们与regex匹配时,我遇到了一个问题,我必须在不同的测试站点上工作的regex(例如regex101,似乎在这里建议使用JS),在我的代码中不起作用。用于匹配没有数字的输入的正则表达式为/^dvb (\D*)$/
,我正在使用/dvb\s+(.*)in (\d*)/
来匹配用户输入延迟的情况。
我的hubot的一个最小代码示例由于我不知道的原因而不匹配,如下所示:
robot.respond /^dvb (\D*)$/, (res) ->
hst = res.match[1]
res.send hst
感谢您对此的任何帮助。
最佳答案
根据源 respond
code comments:
respond
的正则表达式转到 respondPattern
,后者转义^
并警告不要使用 anchor :
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)