尝试匹配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“
答案 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
任何正则表达式组[()中的位都作为额外参数传递给任何相关的插件方法。