[前][次][番号順一覧][スレッド一覧]

ruby-reference-manual:2672

From: "5.5" <5.5@m...>
Date: Thu, 26 May 2011 22:50:39 +0900
Subject: [ruby-reference-manual:2672] Re: 「マッチ」という用語

5.5 です。

この件,よく調べてからご返事しようと思っていたら,ずるずると日が
経ってしまいました。申し訳ありません。
結局よく検討できていないのですが,とりあえずご返事します。

(11/04/30 3:28), NARUSE, Yui wrote:
> (2011/04/29 2:06), 5.5 wrote:
>> 『詳説正規表現』(初版1刷)p. 26 にこうあります:
>>
>>   筆者が「正規表現が文字列とマッチする」と言った場合,実際には,
>>   文字列の一部でマッチするという意味である。厳密には「a」という
>>   正規表現は cat とマッチするのではなく,cat の中にある a をマ
>>   ッチするのである。これは混乱を招くほどのことではないが,一応
>>   念のため。
>>
>> したがって,著者は,基本的には [1] の意味で使っているようです。
> 
> まさにその引用部を読むと、
> 
>> 筆者が「正規表現が文字列とマッチする」と言った場合,実際には,
>>   文字列の一部でマッチするという意味である。
> 
> 「マッチする」と言った場合は [2] を指すって言ってますよね、これは。

あ,そうかもしれません。二回目に出てくる「文字列」は最初に出てくる
「文字列」と同じものを指しているわけですか。
原文だとはっきり分かるのでしょうけど。

>>>> [3] の意味で「マッチする」「マッチを行う」「マッチを試みる」
>>>> と書いている箇所が多数ありますが,これは「探索」と言い換え。
>>>
>>> [3] は「マッチさせる」じゃないですかね。
>>> 探索でもいいと思いますが、まぁ言い換える必要は無い気がします。
>>
>> 『詳説』では,探索を行うことを「マッチを行う」と書いているみたい
>> です。
>> 「マッチに成功」という表現も出てきます。
>> これらの「マッチ」は,当てはまることではなく当てはめ,つまり,当
>> ててみて当てはまるかどうか吟味することですね。
>>
>> 「マッチを行う」は使っても問題ないような気がします。
>> でも「マッチする」はさすがに無しだと思います。
>>
>> 「マッチさせる」は「当てはまるようにする」ような印象を受けます。
>>
>> 探索は情報科学(?)のごく一般的な用語でぴったりだと思うんですが。
> 
> 「探索」って search で、「マッチ」は match なので、別の意味じゃないですか。
> search を使うべきところで match を使っていたりその逆だと、
> 確かに直した方がいいかもしれません。
> で、[3] で意図している例でどちらを使うべきかはちょっと悩むので、
> 具体例とその修正案があった方がいいんじゃないでしょうか。

その具体例と修正案を考えようと思って,まだ考えられていません。
すみません。

> ところで、search の訳語は文字列だと普通「検索」じゃないですかね。
> ツリーやグラフだと幅優先探索みたいに探索を使うことが多いと思いますが。

文字列でも「探索」は普通に使うみたいです。

Wikipedia「文字列探索」:
http://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E5%88%97%E6%8E%A2%E7%B4%A2
このページは文字列パターンではなく特定の文字列の探索の話ですが,こ
こへリンクしている「探索」のページでは,「文字列探索」をパターンの
探索としています。

テキストエディターでは「検索」のほうが多そうですね。

「探索」にはこだわっていませんので,「検索」でもいいです。

>>>> [4] は単に「探索に成功」。あるいは「ヒットする」。
>>>
>>> [2] と [4] を区別する意味は特には無い気がします。
>>> 「マッチさせ、それが成功したらマッチした位置を、しなかったら nil を返す」
>>> とかはあり得るのでそういうパターンでは「成功」とかありますかね。
>>>
>>>> [5] も「部分マッチ」という言葉を使う。
>>>>
>>>> 探索で得られた文字列は「マッチ文字列」。
>>>> (「マッチする文字列」とは呼ばない)
> 
> 指摘で漏れていましたが、これって例えば String#split とかがそうで、
> http://doc.ruby-lang.org/ja/1.9.2/method/String/i/split.html
> 語を直しつつまとめると「マッチする文字列で分割し、
> マッチした文字列は結果に含まれない」とか。
> つまり、これって普通に時制なんじゃないですかね。
> まだ分割しておらずマッチもしてないから「マッチする文字列」になってる、と。

うーん,そうですね,「マッチした」という形に限定するのであれば,
大丈夫そうな気もします。
つまり,

 マッチする文字列 → 正規表現に当てはまる文字列
 マッチした文字列 → 探索によって見出された文字列

と使い分けるわけですね。
ただ,探索によって見出すことを「マッチする」と呼ぶと,前者と紛らわしい
のでそういう使い方はしない,と。

>>> [2] と区別する意味がよくわかりません。
>>
>> [1] [2] は当てはまるか否か,どのように当てはまるかという関係性,い
>> わば数学の話で,[3]〜[5] はメソッドの探索動作の話です。
>>
>> 文脈で分かることが多いのですが,別物なので区別したいです。
> 
> うーん、わからないでもないんですが、やっぱり具体例を出して頂いた方が
> いいんじゃないかな。

すみません,これも具体例をいま提示できないです。

-- 
5.5@m...

--
ML: ruby-reference-manual@m...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

      2617 2011-04-28 15:53 [5.5@m...            ] 「マッチ」という用語                    
      2618 2011-04-28 17:55 ┗[naruse@a...         ]                                       
      2621 2011-04-29 07:17  ┗[5.5@m...            ]                                     
      2622 2011-04-29 20:28   ┗[naruse@a...         ]                                   
->    2672 2011-05-26 15:50    ┗[5.5@m...            ]