kind=defined
names=compile,new
visibility=public

--- compile(string, option = nil, code = nil) -> Regexp
--- new(string, option = nil, code = nil) -> Regexp

文字列 string をコンパイルして正規表現オブジェクトを生成して
返します。

第二引数が [[c:Fixnum]] であった場合、その値は

  * [[m:Regexp::IGNORECASE]]
  * [[m:Regexp::MULTILINE]]
  * [[m:Regexp::EXTENDED]]

の論理和でなければなりません。

第二引数が [[c:Fixnum]] 以外であれば真偽値の指定として見なされ、真
(nil, false 以外)であれば [[m:Regexp::IGNORECASE]]
の指定と同じになります。

第三引数が与えられた時には、[[m:$KCODE]] の値にかかわ
らず、指定された文字コードでマッチを行います。文字コードは
[[m:$KCODE]] への代入と同様に文字列引数の最初の一文字で決定されま
す。

第一引数が正規表現であれば内容が同じ(ただし、上記フラグの内容はク
リアされた)正規表現を複製して返します。このとき、複製した正規表現
に対して、第二、第三引数の指定が設定されます。

第一引数が正規表現であれば第一引数を複製し
て返します。第二、第三引数は警告の上無視されます。

正規表現のコンパイルに失敗した場合、例外 [[c:RegexpError]] が発生
します。

@param string 正規表現を文字列として与えます。

@param option [[m:Regexp::IGNORECASE]], [[m:Regexp::MULTILINE]],  [[m:Regexp::EXTENDED]] の論理和を指定します。

@param code 文字コードを[[m:$KCODE]] への代入と同様の文字列で指定します。

@raise  RegexpError 正規表現のコンパイルに失敗した場合発生します。

  str = "This is Regexp"
  t1 = Regexp.compile("this is regexp", Regexp::IGNORECASE)
  t1.match(str)
  puts $~ #=> This is Regexp 

  t2 = Regexp.compile('
	this         # ここは使用されない
	\ is
	\ regexp     # ここも使用されない
  ', Regexp::EXTENDED | Regexp::IGNORECASE)
  t2.match(str)
  puts Regexp.last_match #=> This is Regexp

  str = "ふるいけや\nかわずとびこむ\nみずのおと"
  t2 = Regexp.compile("ふる.*?と", Regexp::MULTILINE)
  puts t2.match(str)[0]  #=> ふるいけや
                         #=> かわずと

@see [[m:$KCODE]]

