まつもと ゆきひろです
In message "[ruby-list:8016] Re: regexp difference with perl"
on 98/05/20, Inaba Hiroto <inaba / st.rim.or.jp> writes:
|> そうですね.今は違いはm optionだけだとおもうのですが
|
|いえ、結構あると思います。常に/mつきになっている他に、perl5.004_04との
|違いとして、
ふぇぇ,結構あるですね.Perlは奥が深い….
|・\Gがない
rubyにはm/RE/gがないんで作りようがないんですが,違いは違いで
すね.
|・(?i)等がない
忘れてました.GNU regexの実装上の都合で途中でignore caseを設
定できないんでした.原理的には可能なんですが….
# EXACTとEXACTiを分離するとか
他のオプションに関しても
s,mはrubyにはない
s,e,nは実装上の都合でムリそう
xは…うーん…(後述).
というのが現状です.
|・/xがない
これはかなり大きな違いですよね.原理的には可能なのですが,正
規表現ルーチンに手を入れるのは鬼門なので,ためらっています.
|・/sが違う意味(.が\nにマッチする等)
|・studyがない(効率だけの問題ですが)
|・??がない(Perlのマニュアルに使うべきでないと記述のある機能ですが)
これらは正規「表現」の違いではないような….「正規表現機能」
の違いではありますが.
|逆にrubyの方にだけあるのは
|
|・漢字コードを示す /s、/e、/n
|
|・\<、\>がある。
|
|ですね。
\<, \>は「記号のメタ文字は直前に\がつかない」というPerl正規
表現の大原則を崩すので,かなり長いこと「どーしよーかなー」と
思ってたのですが,「rubyならRegexp.quoteを使うだろう」という
ことで,残したままになってます.
|後、正規表現だけの話ではないですが、文字列展開で
|
|・\l, \u, \L, \U, \Q, \Eがない
|
|・\sがスペースに展開される(細かい事ですが)
|
|というのもあります。
これは「正規表現」の違いではないですが,これは違いとして受け
入れて頂こうと思います.
|上記のように結構違うので、そのように書いてもらえればと思います。1.1b
|or 1.1cの段階でいくつか取りこんでもらえればもっと良いのですが:->
そーですねえ.やったらできそうなのは
x option
(?i..)
(?x..)
くらいですか.だれか背中を押してくれると(あるいは代わりに実
装してくれると)できないことはないと思うのですが.
# 違いは違いとしてそのままで良いというのも言えないことはない.
まつもと ゆきひろ /:|)