0

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

所以我当前的代码工作正常,但只有当字符串带有一些额外的单词时才会失败。例如

说我试图只匹配“hello-1234”,那么它会正确响应,但如果我输入“common 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”

4

2 回答 2

1

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

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

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

code = m.message.match(/ora-\d{0,7}/i)[0]
于 2014-02-23T02:26:42.990 回答
0

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

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

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

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

于 2014-02-24T23:39:46.830 回答