我正在尝试编写一个hubot脚本来回答两种不同的输入。用户可以输入本地公共(public)交通工具的站点名称,也可以选择后缀后缀。

因此,对于第一个选项,输入可以是dvb zellescher wegdvb albertplatz,对于第二个选项,输入可以是dvb zellescher weg in 5dvb 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)

10-08 03:28