Coffeescript 正则表达式未按预期匹配
Coffeescript regex not matching as intended
我正在尝试编写一个 hubot 脚本来响应两种不同类型的输入。用户可以输入本地 public 交通站点的名称,也可以选择在后缀上加上延迟。
因此,第一个选项的输入可以是 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
感谢您对此的任何帮助。
根据消息来源respond
code comments:
# Public: Adds a Listener that attempts to match incoming messages
directed
# at the robot based on a Regex. All regexes treat patterns
like they begin
# with a '^'
来自 respond
goes to respondPattern
的正则表达式转义 ^
并警告不要使用锚点:
if re[0] and re[0][0] is '^'
@logger.warning \
"Anchors don't work well with respond, perhaps you want to use 'hear'"
因此,您需要删除 ^
,或者使用不使用任何 "smart" 正则表达式预处理的 .hear
方法:
hear: (regex, options, callback) ->
@listeners.push new TextListener(@, regex, options, callback)
我正在尝试编写一个 hubot 脚本来响应两种不同类型的输入。用户可以输入本地 public 交通站点的名称,也可以选择在后缀上加上延迟。
因此,第一个选项的输入可以是 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
感谢您对此的任何帮助。
根据消息来源respond
code comments:
# Public: Adds a Listener that attempts to match incoming messages directed
# at the robot based on a Regex. All regexes treat patterns like they begin
# with a'^'
来自 respond
goes to respondPattern
的正则表达式转义 ^
并警告不要使用锚点:
if re[0] and re[0][0] is '^'
@logger.warning \
"Anchors don't work well with respond, perhaps you want to use 'hear'"
因此,您需要删除 ^
,或者使用不使用任何 "smart" 正则表达式预处理的 .hear
方法:
hear: (regex, options, callback) ->
@listeners.push new TextListener(@, regex, options, callback)