3

我了解捕获组开头的问号 (?:pattern) 表示此模式不应创建反向引用,但在以下示例中,问号位于捕获组末尾之后是什么意思通配符?

  self =~ /(.*?)_(\d+)$/

代码

class String
# used to instantiate a model based on a dom_id style
# identifier like "person_10"
  def to_model
    self =~ /(.*?)_(\d+)$/
    class_name, id = $1, $2
    class_name.classify.constantize.find(id)
  end
end
4

1 回答 1

4

这是非贪婪扩展。 尾随?转换*+从贪婪到非贪婪。非贪婪通配符将选择最小的匹配字符集,而不是最大的可能。请参阅此博客以获取说明

于 2013-01-03T04:32:10.257 回答