<< 前 ホーム 次 >>

bakaid: 20051125

http://www.tokyo-np.co.jp/00/detail/20051125/fls_____detail__020.shtml

  和泉さんはプロレスラーとしてもデビューした。

なぁに、かえって以下略

--

へー、assert_diffってオレのしか引っかかんないのか。みんなやってんのか
と思ってた。

まー、しかし、オレもロクなもん作ってねーわな。小物ばっかしだし、かといっ
て使われてるわけでもなし。

--

オブジェクトの配列を正規表現で検索する。原理は単純だ。オブジェクトの配
列を文字列と正規表現に変換できればいい。

class Char
  def initialize(ch)
    @ch = ch
  end

  def to_c
    return @ch
  end
end

class MetaChar
end

class Lparen < MetaChar
  def to_c
    return "("
  end
end

class Rparen < MetaChar
  def to_c
    return ")"
  end
end

class Plus < MetaChar
  def to_c
    return "+"
  end
end

def objects2str(objects)
  return objects.map{|ech| ech.to_c}.join
end

def objects2regexp(objects)
  return nil unless objects || objects.empty?
  buf = ''
  objects.each do |ech|
    if ech.is_a?(MetaChar)
      buf << ech.to_c
    else
      buf << Regexp.quote(ech.to_c)
    end
  end
  return Regexp.compile(buf)
end

haystack = [
  Char.new("b"), Char.new("a"),
  Char.new("n"), Char.new("a"),
  Char.new("n"), Char.new("a"),
  Char.new("s")
]

needle = [
  Lparen.new, Char.new("n"), Char.new("a"), Rparen.new, Plus.new
]

hstr = objects2str(haystack)
regexp = objects2regexp(needle)
match = regexp.match(hstr)
p haystack[(match.begin(0))...(match.end(0))]

漢字を使えば、オブジェクト→文字へのマッピングで文字が足りなくなるとい
うこともまずないだろう。

本家Permlink

<< 前 ホーム 次 >>


Copyright © 1905 tko at jitu.org

バカが征く on Rails