Regex 匹配Hubot';咖啡脚本中的名字
我想创建一个Hubot脚本,用于侦听以下字符串:Regex 匹配Hubot';咖啡脚本中的名字,regex,coffeescript,hubot,Regex,Coffeescript,Hubot,我想创建一个Hubot脚本,用于侦听以下字符串: thanks Hubot 其中Hubot是机器人程序的名称。如果我们假设bot总是被命名为hubot,那么它就微不足道了: robot.hear /thanks hubot/i, (msg) -> ... 但是名称当然可以不同,尽管包含在robot.name变量中 问题:如何在正则表达式中插入bot的名称?似乎表明您可以只使用块正则表达式,但我尝试了: robot.hear ///thanks #{robot.name}///
thanks Hubot
其中Hubot
是机器人程序的名称。如果我们假设bot总是被命名为hubot
,那么它就微不足道了:
robot.hear /thanks hubot/i, (msg) ->
...
但是名称当然可以不同,尽管包含在robot.name
变量中
问题:如何在正则表达式中插入bot的名称?似乎表明您可以只使用块正则表达式,但我尝试了:
robot.hear ///thanks #{robot.name}///i, (msg) ->
....
但它似乎不起作用
编辑:我有一个变通方法,我可以提取第二个单词并与机器人的名称进行比较,如下所示:
robot.hear /thanks (.*)/i, (msg) ->
name = msg.match[1]
if name.toLowerCase() is robot.name.toLowerCase()
....
但这感觉相当困难,我希望能够将一个变量插入正则表达式本身。Coffeescript中的
//
不仅允许插值,还采用了完全扩展模式,这意味着这些正则表达式中的空格不再重要,例如,如果要匹配空格,则必须使用类似\s
所以试试这个:
robot.hear /// thanks \s+ #{robot.name} ///i
我们的hubot有这样一个脚本:由于
robot.hear///Thank\s+#{robot.name}///i,(msg)->
,出现了什么错误?你链接到了与你所说的不同的东西。@Sukima:很好!非常喜欢添加表情符号,所以我将使用您的脚本。