匹配cinch bot中的特定字符串

时间:2014-02-22 22:00:29

标签: ruby regex cinch

尝试匹配Cinch bot框架中的特定字符串。

所以我当前的代码工作正常,但只有在字符串附带一些额外的单词时才会失败.e.g

说我试图只匹配“hello-1234”然后它正确响应,但如果我像“常见的hello-1234”或“hello-1234关闭”,则代码失败。

任何人都可以指导我如何摆脱这种情况。

代码:

require 'cinch'
require 'uri'
require 'nokogiri'
require 'net/https'

class Jira
  include Cinch::Plugin

  listen_to :message


  def listen(m)

    rx = config.jira.regex
    if md = m.message.match(rx)
    url = "#{config.jira.url}#{m.message.upcase}"
      response = httpget url
      details = Nokogiri::HTML response

config.jira.regex = / \ b(ora) - (\ d {0,7})\ b / i

这个正则表达式匹配ora-1234567。说我有“开始ora-1234”或ora-1234结束“在上述情况下如何忽略开始和结束并仅匹配”ora-1234“

2 个答案:

答案 0 :(得分:1)

要从消息中提取目标,请使用此正则表达式:

/ora-\d{0,7}/i

我看起来你正在使用ruby,所以这里是从更长的字符串中获取目标的代码:

code = m.message.match(/ora-\d{0,7}/i)[0]

答案 1 :(得分:0)

要将消息的一部分作为变量获取,只需执行以下操作:

listen: /(ora-\d{0,7})/i

def listen(m, jiraid)
  url = "#{config.jira.url}#{jiraid}"
  response = httpget url
  details = Nokogiri::HTML response

任何正则表达式组[()中的位都作为额外参数传递给任何相关的插件方法。