[#31178] in という演算子は? — "たけ(tk)" <ggb03124@...>
in という演算子はないのでしょうか?。
In <20010901205605.B2CB.GGB03124@nifty.ne.jp>
[#31191] クラスメソッドについて — cyross@...
みなさん、初めまして。
まつもと ゆきひろです
サイロスです。
まつもと ゆきひろです
[#31198] Re: [ruby-talk:20696] Re: CORBA Ruby mapping — Daisuke KANDA <MAP2303@...>
[#31205] メソッドの再定義で super は使えますか? — Take_tk <ggb03124@...>
いままで
[#31227] CGI でファイルアップロード — Kamakura Sadanori <kamakura@...>
鎌倉と申します。教えてください。
[#31234] oracle: sub query — Yasushi Shoji <yashi@...>
やすしです。
At Tue, 4 Sep 2001 19:59:11 +0900,
At Wed, 5 Sep 2001 11:46:41 +0900,
[#31238] 半角から全角へ変換 — 吉川 正晃 <yosikawa@...>
吉川と申します。こちらには初めての投稿になります。
わたなべです。
たけ(tk)です。
わたなべです。
あづみです。
たけ(tk)です。
たけ(tk)です。
[#31280] 掲示板の再読み込み時の問題 — みかみまさと <kofu@...>
こんにちは。いつもお世話になっています、みかみと申します。
[#31283] ruby 1.6.5 preview1 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#31294] blade ruby-list thread 表示ストップ — Noritsugu Nakamura <nnakamur@...>
[#31303] net/telnet でホストに接続できない — Satoru Sakashita <sakasita@...>
坂下です。
[#31339] Toshihiko Inoue/mazak は不在にしております。 — Toshihiko_Inoue@...
2001/09/09 から 2001/09/30の間、不在にしております。
[#31369] Ruby 開発環境 RDE0.9.2.0 公開 — 斉藤和樹 <QZS01353@...>
こんにちは。斉藤です。
[#31377] 添付ライブラリのリファレンス (HTML) — "Sadayuki Sakamoto" <flea@...8.dion.ne.jp>
酒本と申します。
吉川です。
酒本です。
新井です。
[#31387] Win32OLE 拡張の試み — arton <arton@...>
artonです。
[#31406] RD format — "K.Kosako" <kosako@...>
RDの仕様について質問ですが、埋め込み用途ではなく、
Toshです。
[#31414] ruby 1.6.5 preview — m_seki@...
なかだです。
なかだです。
なかだです。
まつもと ゆきひろです
[#31419] Hash#+ ハッシュの足し算はいかが? — Take_tk <ggb03124@...>
class Hash
有馬です。
[#31441] 散財自慢 — keiichi matsunaga <ma2@...>
松永です。
[#31443] About Array#index — Takayasu HISANO/久野 孝泰 <taka@...>
はじめて投稿致します。
[#31463] お知恵を拝借 — cyross@...
サイロスです。
[#31486] entry ordering of RAA — Tanaka Akira <akr@...17n.org>
ふと、疑問に思ったのですが、RAA のエントリの順番はどのようにして決まっ
まつもと ゆきひろです
[#31496] Ruby/GTK latest version? — TAKAHASHI Masayoshi <maki@...>
高橋征義です。
[#31499] はじめまして AWK から Ruby — Kusunoki Kaoru <kusunoki@...>
はじめまして。
まつもと ゆきひろです
[#31508] 全角を半角に変換 — yoshikazu tsubaki <y-tsubaki@...>
#2回目の人ごめんなさい(間違えて2つのMLに送信してしまいました)
わたなべです。
In <4518-Mon17Sep2001192412+0900-eban@os.rim.or.jp>
[#31533] ruby 1.6.5 — matz@... (Yukihiro Matsumoto)
Ruby 1.6.5 is released, check out:
[#31551] incorrect float behavior if an extension calls setlocale — akira yamada / やまだあきら <akira@...>
[#31568] net/pop — OHARA Shigeki <os@...>
大原です。
[#31576] eruby が core dump — Teruki Shigitani <shigi@...>
鴫谷と申します。
[#31577] csv-1.0.1 で最後のカラムが isNull = true に — Teruki Shigitani <shigi@...>
鴫谷と申します。
[#31579] eruby の charset について — Teruki Shigitani <shigi@...>
鴫谷と申します。度々ですみません。
[#31588] re:Volume Label の取得法について — bind <bind@...>
さいとうです。
[#31593] 配列の和,積の作り方 — Yamamoto Atsushi <yamamoto@...>
山本と申します.
[#31626] my LC2001 summary — Minero Aoki <aamine@...>
あおき@結局三日連続で飲んでしまった です。
まつもと ゆきひろです
助田です。
なかだです。
あおきです。
artonです。
あおきです。
あおきです。訂正。
高橋征義です。
まつもと ゆきひろです
高橋征義です。
もりきゅうです。
なかだです。
もりきゅうです。
もりきゅうです。
こんにちは、なかむら(う)です。
なかだです。
もりきゅうです。
はじめまして、Kita といいます。
もりきゅうです。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
もりきゅうです。
もりきゅうです。
もりきゅうです。
もりきゅうです。
もりきゅうです。
もりきゅうです。
[#31634] Marshal するオブジェクトを変更したい — "Shin'ya Adzumi" <adzumi@...>
あづみです。
[#31647] Net::HTTP で post — Kazuhiro NISHIYAMA <zn@...>
cgi-lib.plを使ったcgiにpostできません。
In <20010930113651.A1122@jbtkbc103.jbt.co.jp>
あおきです。
[#31649] pilot .pdb — Masatoshi SEKI <m_seki@...>
[#31653] New project: let me see... — Kazuhiko <kazuhiko@...>
かずひこです。
こんにちは。kadu です。
かずひこです。
かずひこです。
nyasu@3web です。
[ruby-list:31599] Re: sub の動作
高橋征義です。
Shigeo OHUE <rs232c@hte.highway.ne.jp>さん:
> >:文字列から正規表現で引っ掛けて「\&」に置換したいんですがうまく
> >:できません。たとえば下のようになっちゃいます。
(略)
> 何でそうなるかはまだわかりませんが、これから勉強します。
んでは、「何でそうなるか」について、解説してみます。
# 間違いがあったらご指摘ください(_o_)
要点は3つあります。
a) 「\」という文字は、「""」の中でも「''」の中でも特別な意味を
持ちます。
要するに「\」はエスケープ文字なので、自分自身をエスケープ
することができなければなりません。
「"\\"」「'\\'」という文字列リテラルは、「\」という文字列に
なります。
b) 「''」の中で、「\」の後ろに「\」か「'」以外の文字が来たときは、
「\」+その文字、になります。
つまり、「'\$'」は「\$」という文字列に、「'\a'」は「\a」という
文字列になります。
ここで気をつけた方がいいのは、「'\\$'」と「'\$'」が同じに「\$」に
なってしまう、ということです。「'\\$'」では「\」がエスケープされ
ているわけですね。
「\\$」という文字列が欲しい場合は、「'\\\$'」または「'\\\\$'」と
書かなければなりません。
# どちらかというと、「'\\\\$'」と「\」を4つ書くのがいいような
# 気がしますが、どうなんでしょうね。
c) 「\&」という文字列は、subの第2引数の中では、「マッチした文字列と
同じ文字列」の意味になります。これを避けたい場合、つまり「\&」と
いう文字列そのものに置換した場合は「\\&」という文字列を使う必要が
あります(「"\\&"」でも「'\\&'」でないのに注意!)。
#!/usr/bin/env ruby
replace_str = '\\&'
p "012abc".sub(/a/, replace_str + replace_str) #=> "012aabc"
「マッチした文字列」というのは「a」なので、replace_str + replace_str
は「a」+「a」、つまり「aa」になります。
これを踏まえた上で、実際の置換例を見てみましょう。
| irb(main):001:0> "a".sub(/a/, '\$')
| "\\$"
これは、/a/にマッチする最初の文字列を「\$」という文字列に置換する
ことになりますが、「\$」には特殊な意味はないので、そのまま「\$」に
なります。これを「""」で括られた文字列リテラルの形で表示すると、
「"\\$"」になります。
| irb(main):002:0> "a".sub(/a/, '\&')
| "a"
これも、/a/にマッチする最初の文字列を「\&」という文字列に置換する
ことになります。ところが、「\&」は「マッチした文字列と同じ文字列」と
いう意味になるので、マッチした文字列、つまり「a」で置換することに
なります。
ということは、「a」を「a」で置換するので、結果もやはり「a」になります。
| irb(main):003:0> "a".sub(/a/, '\\\\&')
| "\\&"
「'\\\\&'」は、「\」のエスケープが2回行われている、ということで、
「\」+「\」+「&」、つまり「\\&」という文字列になります。これで、
ようやく/a/を「\&」に置換できることになります。
……判りましたか? やっぱり判りにくいですよね?(^^;;
というわけで、私としても、ブロックを使うことをお勧めします。
# 長々と書いて結論がコレかい!……というのは言わない約束です(汗
高橋征義 (TAKAHASHI Masayoshi) Email:maki@inac.co.jp