[migemo] 文字クラス内での [ や ] のエスケープ処理について
Morita Sho
morita-pub-ja @ inz.sakura.ne.jp
2008年 6月 1日 (日) 18:50:59 JST
はじめまして。森田と申します。
Ruby/Migemo を使用したツールを作っていたところ、Ruby が警告を表示するような正規
表現パターンが生成されるケースがありましたので、報告いたします。
例えば、このようなスクリプトを書いて実行すると
$ cat test.rb
$KCODE="e"
require 'migemo'
dict = MigemoStaticDict.new("/usr/share/migemo/migemo-dict")
migemo = Migemo.new(dict, "[")
migemo.optimization = 3
migemo.type = "ruby"
re = migemo.regex
puts re
Regexp.new( re )
$ ruby test.rb
[[[]
test.rb:11: warning: character class has `[' without escape
というように、警告が表示されます。
"[" という文字列を渡すと、
[[[]
というパターンが生成されるのですが、ruby 1.8 からは文字クラスの中でエスケープし
ない [ や ] がある場合、警告が表示されるようです。
正規表現 - Rubyリファレンスマニュアル
http://www.ruby-lang.org/ja/man/html/_C0B5B5ACC9BDB8BD.html#footnote-3
> ruby 1.8 feature このような "]" は、バックスラッシュエスケープを行うことが推奨
されます。ruby 1.8 では、エスケープしない "[" や "]" に対して警告が出るようにな
りました。
現在のところ警告だけで実害はないようですが、毎度警告が表示されてしまいますので、
文字クラス内の [ と ] をエスケープするようにしたパッチを作成してみました。
お手数とは思うのですが、確認していただければ幸いです。
以上です。失礼しました。
--
Morita Sho <morita-pub-ja @ inz.sakura.ne.jp>
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: migemo-regex-add-escaping-for-brackets.patch
型: text/x-diff
サイズ: 564 バイト
説明: 無し
URL: http://www.namazu.org/pipermail/migemo/attachments/20080601/25afc6eb/attachment.patch
Migemo メーリングリストの案内