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

ruby-reference-manual:2621

From: "5.5" <5.5@m...>
Date: Fri, 29 Apr 2011 14:17:07 +0900
Subject: [ruby-reference-manual:2621] Re: 「マッチ」という用語

成瀬さん

5.5 です。すみません,ML に返信したつもりが誤って成瀬さん個人へ
返信してしまいました。
ML 宛に再送します。

(11/04/29 0:55), NARUSE, Yui wrote:
> > grep 以降の「正規表現」において「本来」を論ずることがナンセンスだと
思います。
> > そもそも Ruby のメソッドで [1] を扱うものってありましたっけ。

[1] はメソッドの探索動作の話ではなく,「当てはまる」という関係性
を指しています。

>> >> [2] は「部分マッチ」という用語を導入して「s は r に部分マッ
>> >> チする」としたい。
>> >> 正規表現に関する多くの解説書・ウェブサイトがマッチと部分マ
>> >> ッチを区別せずに「マッチ」と書いているために,初心者を混乱
>> >> させています。
> >
> > 長いものに巻かれるべきじゃないですかね。
> > 日本語において最も長いのは詳説正規表現だと思うので、
> > これでの語をに習うのが多くの場合妥当だと思っています。

『詳説正規表現』(初版1刷)p. 26 にこうあります:

  筆者が「正規表現が文字列とマッチする」と言った場合,実際には,
  文字列の一部でマッチするという意味である。厳密には「a」という
  正規表現は cat とマッチするのではなく,cat の中にある a をマ
  ッチするのである。これは混乱を招くほどのことではないが,一応
  念のため。

したがって,著者は,基本的には [1] の意味で使っているようです。
必ずしも徹底してはいないようですが,たとえば p. 37 では

  もし変数 reply 内のテキストが正規表現「云々」とマッチしたら

のように「〜内」という言葉を使って意味を明確にしています。

>> >> [3] の意味で「マッチする」「マッチを行う」「マッチを試みる」
>> >> と書いている箇所が多数ありますが,これは「探索」と言い換え。
> >
> > [3] は「マッチさせる」じゃないですかね。
> > 探索でもいいと思いますが、まぁ言い換える必要は無い気がします。

『詳説』では,探索を行うことを「マッチを行う」と書いているみたい
です。
「マッチに成功」という表現も出てきます。
これらの「マッチ」は,当てはまることではなく当てはめ,つまり,当
ててみて当てはまるかどうか吟味することですね。

「マッチを行う」は使っても問題ないような気がします。
でも「マッチする」はさすがに無しだと思います。

「マッチさせる」は「当てはまるようにする」ような印象を受けます。

探索は情報科学(?)のごく一般的な用語でぴったりだと思うんですが。


>> >> [4] は単に「探索に成功」。あるいは「ヒットする」。
> >
> > [2] と [4] を区別する意味は特には無い気がします。
> > 「マッチさせ、それが成功したらマッチした位置を、しなかったら nil を
返す」
> > とかはあり得るのでそういうパターンでは「成功」とかありますかね。
> >
>> >> [5] も「部分マッチ」という言葉を使う。
>> >>
>> >> 探索で得られた文字列は「マッチ文字列」。
>> >> (「マッチする文字列」とは呼ばない)
> >
> > [2] と区別する意味がよくわかりません。

[1] [2] は当てはまるか否か,どのように当てはまるかという関係性,い
わば数学の話で,[3]〜[5] はメソッドの探索動作の話です。

文脈で分かることが多いのですが,別物なので区別したいです。


たとえば,現在の gsub の説明では,マッチする文字列をすべて置き換え
るように書かれています。
「マッチする」が [1] の意味だとすると,この説明は間違いです。

"abb" において,[ab]b に当てはまる部分文字列は ab と bb の二つあり
ますが,"abb".gsub(/[ab]b/, "c") は ab しか置換しません。

こんなことは,分かっている人にとっては取り立てて言うほどのことでも
ありませんが,初心者が,正規表現をなんとなく使うことができる段階か
らしっかり理解する段階に移るときには大事な話であると思います。
私自身の過去を振り返って。
もやもやと理解しにくかった所が,今思うとこういう所だったんです。


-- 
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...            ]