In message <19991119135748U.tanaka / esd.spr.epson.co.jp>
tanaka / esd.spr.epson.co.jp writes:

> となってしまいます。 "[" を入れなければOK。
> 変数の中に "[" がある場合はどうやって回避するのでしょうか?

こっちは答えが出ているので良いとして,


> # "/" に対しては "\" が自動的に挿入されているのになぁ。

こっちについて.「`/' は正規表現のメタキャラクタではない」という事と,
「正規表現の例外のメッセージは inspect 相当の操作をして出力されている」
ということを考え合わせると,なっとくできます.


正規表現の中に `/' は生で入っていていいわけです.ただしリテラルとして
は正規表現全体を括る `/' と区別できないので `\/' と書く必要がある.

# 実際 %r(/usr/local/bin) と書いたらリテラルとしても何の問題もない.

で,これを inspect すると `/' が `\/' になった文字列が得られる.

# String の場合と同じように.


一方 `[' は正規表現のメタキャラクタ --- 正規表現の中で特別な意味をもっ
た文字です.`]' と対になってキャラクタクラスを指定するのに使う.そして,
特別な場合を除いて必ず対になっていなければならない.

# 普通の算術式で `(' と `)' が必ず対になっていなければいけないのと同じ
# ように.


「ぶっちゃけた話,同じようにエスケープしているようでも何に対するエスケー
プなのかが違うんです」というのを真面目くさって説明すると,こんなになる :-)


-- 
柳川和久 @ 東大阪市 . 大阪府                              November 19, 1999
「たぶん....ケセランパセランか,ホタルか,風に吹かれた綿菓子か,
    マルチーズか,トゥクトゥプか,ティラミスか....ま,そんなものよ」
「桜子ちゃん意地悪い」