返回与此匹配的数组

时间:2019-03-11 20:32:30

标签: regex ruby

使用字符串:

"/create channel welcome message, hello there, any words you like..."

我需要返回一个看起来像这样的数组:

["channel", "welcome message, hello there, any words you like..."]

使用正则表达式。

获取数组的最佳方法是什么?

2 个答案:

答案 0 :(得分:5)

str = '/create   channel welcome message, hello there, any words you like...'

str.split(/\s+/,3).drop(1)
  #=> ["channel", "welcome message, hello there, any words you like..."]

请参见String#split,特别是使用可选的第二个参数limit

答案 1 :(得分:1)

如何在Ruby中使用捕获功能?

/\A\/create (?<command>[[:alpha:]]+) (?<message>.+)\Z

使用matching = <regex>.match(input)将其与字符串匹配时,可以使用matching["command"]matching["message"]访问命令和消息。像这样:

matching = /\A\/create (?<command>[[:alpha:]]+) (?<message>.+)\Z/.match(str)
arr = [matching["command"], matching["message"]]

以下是正则表达式工作的演示:https://rubular.com/r/Cam99r2rkRdSt2

可以在Ruby文档中找到有关正则表达式的更多信息:Ruby Regexp Documentation