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

貪欲でない展開です。 末尾の Aは、 andを greedy から non-greedy に?変換*+します。貪欲ではないワイルドカードは、一致する最大の文字セットではなく、最小の一致する文字セットを選択します。解説はこちらのブログをご覧ください

于 2013-01-03T04:32:10.257 に答える