用正则表达式提取子字符串?

时间:2015-06-11 15:28:08

标签: crystal-lang

String.match会返回MatchData,但如何从MatchData获取匹配的字符串?

puts "foo bar".match(/(foo)/)

输出:

#<MatchData "foo" 1:"foo">

对不起,我是水晶新手。

1 个答案:

答案 0 :(得分:2)

您可以通过众所周知的组索引访问它,确保处理nil(不匹配)的情况。

match = "foo bar".match(/foo (ba(r))/)
if match
  # The full match
  match[0] #=> "foo bar"
  # The first capture group
  match[1] #=> "bar"
  # The second capture group
  match[2] #=> "r"
end

您可以在API docs

中找到有关MatchData的更多信息