「正規表現」の意味-正規表現とメタ文字-

前のエントリ、正規表現についてメモで「正規表現」の意味を考えいったん結論を出した後も、すっきりせずに考察を考え続けたのですが…。す…

前のエントリ、正規表現についてメモで「正規表現」の意味を考えいったん結論を出した後も、すっきりせずに考察を考え続けたのですが…。

すっきりしなかった理由は、「正規表現」という単語、一般的に使われる「正規表現」、メタ文字の3つをごっちゃにして考えていたことだと分かった。

  • ○○は強力な正規表現が使える
  • findは正規表現が使えない、findstrは正規表現が使える

というのは、単語としての「正規表現」の意味で通すと間違い。

  • ○○はメタ文字の種類が豊富
  • メタ文字が使えるか、使えないか

となる。が前者の使い方がIT業界では一般的。つまり正規表現は本来の単語の意味と違ってIT用語化しているのが実情。IT業界では「正規表現=メタ文字を使用した検索」として使われている。

そう考えるとやっとすっきりできました。

「メタ」という言葉の意味について(メモ)

メタは「高次の」という意味ですが、意味だけ知っても分からないので概念を理解する。概念的にはトゥルーマン・ショーをイメージしてもらえれば分かりやすいかも(知らない人はごめんなさい)。あの映画の中でディレクターは主人公よりも明らかに高度な次元に存在するわけで。

aやらbやらただの文字列しか存在しない世界に[0-9]で0から9の1文字にマッチのような明らかに高次の意味を持つ文字。そんなイメージ。

普段の生活で言うと、自分自身を客観的に見つめる能力をメタ認知能力と言ったりします(FPN-同じ失敗を繰り返さないようにするための習慣)。他には論争している両者に対して、第三者的な視点からの意見を述べることをメタ的と言ったりする様ですが…。これって別にメタじゃないでしょ、と思ったりする。

映画デスノートの感想~やはり原作は神だった~

ということで、昨日公開された実写版デスノートを見てきた感想です。■ネタバレなし感想なんだろうな…。微妙っすね。う~ん、とか工工エ…

ということで、昨日公開された実写版デスノートを見てきた感想です。

■ネタバレなし感想

なんだろうな…。微妙っすね。う~ん、とか工工エエェェ( ゚д゚)ェェエエ工工とか言いたくなる場面もあり、どこから語ればいいのか…。

抽象的だけどライトとLに輝きがなかったと言いますか。ライトは彼特有の「行き過ぎた正義感、狂気」が感じられなかった。Lはちょい期待外れだったなぁ。演技が下手、というじゃなく(まぁ「今までは私の完敗です~」の下りはまるっきり棒読みに聞こえたけど)とにかくLを再現できてなかったと言うしかない。登場シーンなんて、ただのネクラでおかしい人にしか見えないし。原作と行動は同じでもこっちの「見え方」としては全然違って来るんだよな。

と、いろいろケチつけてるけど

Lの声とか動作って想像した事がなかった
→なぜなら想像できないほど漫画の中で完結していた
→となると実写で満足出来るわけがない

と言える。まぁ「僕は新世界の神になる」とかLの奇抜な行動とか、そのまま映像化すると単なるイタイ人になってしまうわけで…。けどそういう2人の行動こそがカリスマ性の元なので、避けて通る事はできなかったけどこの映画じゃそこまで再現し切れてなかったな。まぁ原作(特に1巻2巻)が偉大すぎたんだろうけど…。

だから、「ライトやLの実写化」を楽しみにしている原作ファンはがっかりするかもしれない。けど原作読んでない人は「デスノートのルールを駆使した頭脳戦」だけでも十分楽しめると思う。そもそもデスノの肝はストーリーで、原作ファンも最初はストーリー重視で読み始めてだんだんキャラクターに感情移入(?)していったんだから。

映画の展開はゆっくりで原作読んでなくてもついていけるので、原作ファン+原作見ていない人で行って、

初見の人に「デスノートって面白かったね」
原作ファン「いやいや、原作はこんなもんじゃないよ(以下略)」

と語り合うのが正しい視聴方法だと思われますよ。以下ネタバレありの感想。


“映画デスノートの感想~やはり原作は神だった~” の続きを読む

正規表現のメモ2

今回はアプリごとの正規表現実装方法を見ていきましょう。■前回の補足その前に前回、「正規表現とは決められたルールに従って、あるパタ…

今回はアプリごとの正規表現実装方法を見ていきましょう。

■前回の補足

その前に前回、

「正規表現とは決められたルールに従って、あるパターンの文字列を表現する方法」

と言い、それと合わせて「\t」=タブ、「\n」=改行を紹介し「メタ文字を使用してパターンを表現する方法=正規表現だ!」というニュアンスでエントリーを書きましたが、Regular Expression(Riue ちゃんの正規表現講座)などと合わせてもう一度考え直すと、「正規表現」と「正規表現で使用するメタ文字の実装方法」を混同していたような気がします。「正規表現」というのは一般的な方法論で、「正規表現で使用するメタ文字の実装方法」がアプリによって違う、というのが本来の使い方だと思います。

ただWebの正規表現関連ページを見ていると「正規表現=メタ文字を使用したパターン表現」という意味で使われているし、その方が話が通じやすい、ということでウチもこっちの意味で使いたいと思います。…まぁ書いてるうちに意味変わるかもしれませんが。

。oO(だいたいRegular Expressionってのが曖昧なんだよな…。)

■Windows関連系

まずはWindowsのコマンドプロンプト、cmd.exeについて。

  • /* 任意の0文字以上の文字列にマッチ
  • ? 「.」を除く任意の1つの文字にマッチ

以上。う~ん、こりゃ他OSに比べてコマンドシェルが「貧弱ぅぅぅぅ~!」と言われても仕方ないな。cmd.exeでは正規表現と名乗らずワイルドカードと名乗っております。まぁワイルドカード系の正規表現しか実装してないからいいんじゃないかな。

が、検索文字列で正規表現を使える外部コマンド「findstr」はもうちょい詳細な正規表現が使えます。

findstr.exe
正規表現クイック リファレンス:
.            ワイルドカード: 任意の文字
*            繰り返し: ゼロ個以上の直前の文字またはクラス
^            行位置: 行頭
$            行位置: 行末
[class]      文字クラス: セットの任意の 1 文字
[^class]     逆クラス: セット以外の任意の 1 文字
[x-y]        範囲: 指定した範囲の任意の文字
\x           エスケープ: メタ文字 x のリテラル使用
<xyz        単語位置: 単語の先頭
xyz\>        単語位置: 単語の終わり

…早くもcmd.exeとワイルドカードの表記方法が違ってますね。"."と"?"が覚えにくかったのってこのせいか!今度からは意識するので大丈夫だと思いますが。

findstrで正規表現を検索する

copyとxcopyの違いについて

findstr.exeとcmd.exeを比べて疑問に思ったのが、内部コマンドと外部コマンドで使える正規表現が違うんじゃないかってこと。そう思い、copyとxcopy.exeでテストをしてみたけど、結果は変わらず。xcopyでもcmd.exeの正規表現しか使えませんでした。これって

C:\>xcopy c:\test\test?.txt c:\test2\

とかしても「cmd.exeの正規表現ルールで処理→xcopy.exeに丸投げ」されるからなのかな?findstr.exeが詳細な正規表現を使えるのは

findstr "hello[0-9]" test.txt

で、"hello[0-9]"という正規表現文字列をそのままfindstr.exeに投げて、findstr.exe内部で改めて正規表現処理してるから?findstr.exeで検索対象とするファイル名に正規表現が使えないところ(※)を考えると、推測は当たっていそうだ。

○ findstr "hoge[1-3]" C:\scr\test.

× findstr "hoge[1-3]" C:\scr\test[1-3].*

LDAPフィルタでは"/*"しか使えません。使い方は他と同じ。

[XADM] LDP ユーティリティを使用した参照およびクエリ

vbsではかなり詳細な正規表現が使えます。

Clinick’s Clinic on Scripting:正規表現による Visual Basic Scripting Edition (VBScript) の機能強化

これちょっと古いですね。7年前の資料です。もうちょっと新しいものないかな?俺は手元にリファレンス本持ってるからいいけど。

■エディタ系

エディタ系は外部dllによって正規表現を実現しているものが多いみたい、というか以下のエディタは全部そうでした。

秀丸エディタを使いこなす ―正規表現―HmJre.dllで拡張された機能――

TeraPad-FAQ:正規表現での検索/置換に対応してますか?

BREGEXP.DLL(サクラエディタの標準正規表現dll)

多分一長一短あるんだろうけど良く分かりません。とりあえず書式が違うんだろうなぁという理解。書式については

  • perl互換
  • grep系
  • Emacs系
  • jre32.dll系(EmEditor,秀丸,FFFTPで実績あり)

という理解でいいのかな?ここらへんも良く分かってません。正直使うときになったら書式調べればいいじゃん、くらいに考えてます。今はサクラエディタで使われているBREGEXP.EXEがperl互換って事が分かったので(だから改行変換するのに\r\nなんだよなぁ)、がんばって書式マスターしようかなぁと思ってます。

■次回

次はBREGEXP.EXEを使った具体的なテキスト処理の例とかできればいいかなぁと思ってます。書式羅列するだけじゃヘルプと同じだからね。

■メモ

Regular Expression(Riue ちゃんの正規表現講座)
分かりやすいし、読み物としても面白い。

詳説 正規表現 第2版
オライリー・ジャパン
詳説 正規表現 第2版

正規表現の勉強してたら買いたくなってきた。オライリーの本は期待を裏切らないんだよなぁ。高くて分厚いけど。MCPもう一個取ったら自分へのご褒美(笑)に買おうかな。

正規表現についてメモ

普段からなんとな~く使いつつもよく分かっていない正規表現について、ちょっと調べてみました。■分からなかった点「正規表現」の何が分…

普段からなんとな~く使いつつもよく分かっていない正規表現について、ちょっと調べてみました。

■分からなかった点

「正規表現」の何が分からないか?それは「正規表現とは何なのか?」ということである(汗。つまり

「「\t」はタブ、「\n」は改行、「*」は全部にマッチしてくれる便利なやつ」

といった書式は知ってるけど、その他の事についてはよく知らなかった。学ぶ上で特に問題だったのが「正規表現の解説ページによって書いている内容が違う場合がある」こと。例えば秀丸の正規表現サクラエディタの正規表現では書式が違う箇所がある。けどどちらもも「正規表現」と名乗っている。これではどちらを参考にすればいいのか分からない。

■「正規表現」とは

なので、取り合えず「正規表現」という言葉について突き詰めてみることにした。思うに正規表現のイメージがいまいち掴み辛いのは「正規表現」と言われても日本語で意味が分からないからだと思う(つーか「正規」って言葉自体あまり使わないし)。なので書式だけ覚えてしまい「正規表現」という言葉が意味不明の記号化→「正規表現とは何か」と問われたときにうまく説明できないのである。

「正規表現」の原語は「Regular Expression」。「Regular」で辞書を引いてみると(Regularの訳)と「正規」という一言よりは「原則にのっとった、規則正しい」という意味に捉えたほうが分かりやすい(というか「正規」って意味不明だ)。「表現」ってのも落とし穴かも。Expressionの訳はちゃんと「表現(法){ひょうげん(ほう)}、表現{ひょうげん}すること、言い回し」って書いてあるのに、一番大事な「(法)」をスルーして「表現」にしちゃってるもんな。「正規表現」の働きを考えると「正規表現法」の方が正しい日本語訳に近いんじゃないだろうか?よって「正規表現」は

「決められたルールに従って、あるパターンの文字列を表現する方法」

と脳内変換した方がイメージが掴めて理解しやすい。

※ 実は正規表現 – Wikipediaに「文字列の集合を一つの形式で表現する方法」とか似たような説明が書いてあったりするのだけど、これは勉強。自分で調べて理解する過程が重要なので気にしない。

つまり正規表現とは単なる方法論でありメソッドだということだ。僕は今まで「正規表現標準書式」のような具体的な"モノ"があり、それをベースに実装しているものだと思ってたがこの理解は全くの誤りであった。「決められたルールに従って、あるパターンの文字列を表現」してさえいれば「正規表現を使っている」ことになる。なので他のアプリと正規表現の書式が違っても書式間違いではない、というか実装する人の勝手なのである。

一応僕はサクラエディタ使いなので、サクラエディタがbregexp.dllを使って正規表現処理は知っていたし、他の正規表現処理エンジンがある事も知っていた。だがそれらはせいぜい正規表現の処理ロジックとスピードが違うくらいだと思っていた。まさかdllによって書式の実装方法が違うとは思わなかった。

EmEditor で正規表現処理(2)

■正規表現の方言

実は正規表現はプログラム言語やアプリケーション環境によってメタ文字の種類や動作が微妙に異なっている。これを一般に「正規表現の方言」と呼ぶ。

ここでは EmEditor や秀丸エディタに実装されている jre32.dll という正規表現エンジンのケースで説明しているが、Perlという言語と同等の正規表現エンジンを採用しているサクラエディタや、独自の正規表現エンジンを実装している Emacs というエディタなどでは機能しないものもある。(たとえばこのページで登場する後方参照の "\1" は、Perl スクリプトやサクラエディタでは "$1" と記述する。)

…なるほど。まぁおそらく昔からの流れとか系譜があるんだろうな、と想像できる。

■思うに

正規表現をちょこっと解説したようなページで「正規表現ではこういう書式が使えます」と言ってしまうのが良くない。これを聞くと「正規表現に対応している=その書式が全て使える」と理解してしまう。確かに基本的な書式は一緒だが、一部の書式は使えないのが悪質混乱の種となっている。なので

正規表現の書式ページを見る→覚える→
違う正規表現書式のアプリで使う→失敗→なんでやねん

ということになる。

■まとめ

  • 「正規表現」とは方法論
  • 正規表現はアプリによって書式が異なる
  • 正規表現を使用するときには正規表現エンジンと対応書式を確認する

(いつも通り)予定外に長文になったので切り。

人狼四国カスタマイズメモ(ruby)

これをどのカテゴリに入れていいか迷うところだけど、rubyの勉強という意味でIT系に入れておきます。人狼四国(ソース)で1日目の夜(鏡を見た直後…

これをどのカテゴリに入れていいか迷うところだけど、rubyの勉強という意味でIT系に入れておきます。人狼四国(ソース)で1日目の夜(鏡を見た直後の夜)を作るメモ。


“人狼四国カスタマイズメモ(ruby)” の続きを読む

天使なんかじゃない完読

ずっと読みたかった「天ない」を日曜に秋葉原行ったついでに漫喫で8巻完読しました。2時間くらいでちょっと駆け足気味だした。天使なんかじゃ…

ずっと読みたかった「天ない」を日曜に秋葉原行ったついでに漫喫で8巻完読しました。2時間くらいでちょっと駆け足気味だした。

天使なんかじゃない – Wikipedia

なぜずっと読みたかったか?それは高校の時の生徒会の女の先輩が

「私は天ないに憧れて生徒会に入った」

と言ってので。そこまで影響力のある漫画ってどんなんやねん、と。生徒会を題材にした漫画(主題は違うんだけど)ってこともあり興味を持ってました。なんで10年越しと言えば10年越し。逆に言うと10年間読まなくてもよかったんですが、ホスト部経由で少女漫画に興味が高まってた(つーか少年漫画読み飽きた)ので一念発起で読破しました。以下感想。


“天使なんかじゃない完読” の続きを読む

「桜蘭高校ホスト部」見てます

いやーおもろいおもろい。日テレ公式サイトつっても今週の火曜日に初めてみたんですけどね。ふとテレビを付けて10話の後半を見ただけでハマっ…

いやーおもろいおもろい。

日テレ公式サイト

つっても今週の火曜日に初めてみたんですけどね。ふとテレビを付けて10話の後半を見ただけでハマってしまいました。放送済みの1話~9話はyoutubeでフォローしたので(←悪い子)今週からはリアルタイムで見ます。

このアニメ、エヴァやNANAみたいに「人に語りたくなる」とか「空前の大ヒット」とかするアニメじゃなく、なんでハマったかというのを説明するのも難しいんだけど…。構えずに見られて面白くて最後にちょっと心温まるのがいいのかな。1人1人のキャラが立っててうまく纏まってる感じがするね。超金持ち学校のホスト部って設定でも、シナリオは王道的な作りだから安心して見れるのかな、と分析。

まぁ俺としては毎回ハルヒ(涼宮じゃない)いい子だよハルヒ可愛いよと思いながら見てます。テクノラティでブログ検索を掛けると腐女子っぽいブログと腐女子視点からの感想がざくざく引っかかりますが、別に普通の人でも楽しめると思います。

※作ってるのは鋼の錬金術師やエウレカセブンの人達かー。なるほど納得。

あ、オリコンでは実写化してほしい漫画第三位らしいよ。

「女性編」では、葉鳥ビスコ『桜蘭高校ホスト部』(3位)、羽海野チカ『ハチミツとクローバー』(4位)と“学園もの”が上位にランクイン。

『桜蘭高校ホスト部』に関しては、「どんなカッコイイ人が出てくるのかドキドキする」(埼玉県/中高生)、「ホスト部の豪華絢爛な世界を実写化して欲しい」(兵庫県/専・大学生)など、マンガ同様のイケメンときらびやかな世界を再現して欲しいようだ。

いや、再現できないでしょ。花より男子とかなら兎も角、桜蘭高校ホスト部はその非現実さが面白いのであって、ドラマにしちゃうとそれを再現できないでしょう。…そういう意味ではアニメは本当にうまくできてるなぁ。

■超名作といえば★GUN道★

まぁ今クール一番の話題作といえばこれなわけで。

MUSASHI -GUN道- まとめ2号

兎に角1度見てほしい。…が、1度見た後は…。

asahi.comのワールドカップ実況

これおもろいwasahi.com:サッカーワールドカップツ黴€-ツ黴€W杯2006試合がやっいて実況中ならば、手の込んだFlash実況が見られます。俺みたいに夜勤でテ…

これおもろいw

asahi.com:サッカーワールドカップツ黴€-ツ黴€W杯2006

試合がやっいて実況中ならば、手の込んだFlash実況が見られます。俺みたいに夜勤でテレビ見れない人にぴったり。今待ち時間で、男5人がそれぞれ自分のPCとにらめっこしつつ「おぉぉぉ~」とか「あぁぁぁ~」とか言ってます。変な絵w
けど、これって

  1. 夜10時~朝
  2. TVが見れない状況
  3. PCが見れる状況

の人じゃないと意味ないんだよなぁ。家に居れば普通にテレビ見るし。今回のワールドカップの時間帯じゃあんまり意味ないかも。

gigabeatS買ったのにgigabeatVが出た。

GWにgigabeatSを買ってレビューを書こうと思っているうちに、次の機種が発売してしまいました。ITmedia +D LifeStyle:東芝、ワンセグ録画も可能なgigabea…

GWにgigabeatSを買ってレビューを書こうと思っているうちに、次の機種が発売してしまいました。

ITmedia +D LifeStyle:東芝、ワンセグ録画も可能なgigabeat Vシリーズ
東芝、ワンセグ対応のHDDプレーヤー「gigabeat V30T」

HDD容量 30GB S30:30GB S60:60GB
ワンセグチューナ
液晶 3.5型320×240ドット 2.4型240×320ドット
バッテリ駆動時間 ワンセグ視聴:約7時間 ビデオ再生:約9時間 音楽再生:約25時間 音楽再生:約12時間 ビデオ再生:約2.5時間
外形寸法(幅×奥行き×高さ) 124.0×18.5~22.5×75.0mm S30:59.9×99.9×13.2mm S60:59.9×99.9×16.2mm
重量 約230g S30:127g S60:140g
直販価格 49,800円 S30:36,000円 S60:46,000円

こんな感じ。まぁ純粋な音楽プレーヤーであるSと違って液晶大きい本体重いバッテリー長いとかなり違う製品になっちゃってますね。まぁSの液晶とバッテリーで動画見る気にはならなかったので、方向性としては間違ってないんじゃないでしょうか?WMP10,11との連携や動画がwmvに限定されていること以外はともかく、取り合えずワンセグ見れるので一般層に訴求もしやすいでしょう。で、俺なんですが…。

動画はW-ZERO3で見ているので不要。音楽はgigabeatSで聴いているの不要。ワンセグだけが魅力ですが、ほとんど見ないであろうワンセグのためにあんな大きい本体を持ち歩くのはアホらしいので、今回はパスですかね。どうやら東芝さん、今は新コンセプト製品の投入時期っぽいので一段落してから買い換えるのもありでしょう。待ち待ち。

それにしてもワンセグとはかなり奇襲だなぁ。意外なところからiPodの牙城が崩れるかもね、というかそうであってほしい。ギガビ初め他社製品もワンセグ付けるようになったら「今時ワンセグ付いてないのってiPodくらいですよー」って販売トークがつかえるもんね、…という東芝販売員視点。その前に携帯にワンセグついちゃうかもしれないけど。

まぁ今年中は生暖かく戦況を見守る感じで。

DS Lite & Newスーパーマリオ

やっとDS Lite買ったお♪土曜日の朝ヨドバシに行ったら売ってました。俺が買ったのは10時30分くらいだったけど、11時30分くらいでもまだ3色余って…

やっとDS Lite買ったお♪

DSCF1196.jpg

土曜日の朝ヨドバシに行ったら売ってました。俺が買ったのは10時30分くらいだったけど、11時30分くらいでもまだ3色余ってたなぁ。とはいえ、レジは常時列ができている状態なので、土曜日中に売り切れたのは間違いなし。何時まで続くんだろう、この品薄状態?6/5現在でもヤフオクで18000円。通売16800円→ヨドの13%還元+Edy還元5%(ANAマイル+マイぺいすリボ。詳しくはググって)で16800円-(2184P+840円)=13800円だからまだまだ利益で照るよね。まぁヤフオク手数料が5%かかるけど…。

3月12日発売で3ヶ月経っても品薄ってなかなかないんじゃないかな?W-ZERO3でも3ヶ月待てば普通に手に入れられてたし、昔のDQやFFもそう。というかロープレの場合1ヶ月くらいで中古に出回るけど。やっぱり「ゲーム機本体」っていうパイの大きさが功罪だったのかなぁ。

■で、Newスーパーマリオ

土曜日に買って今日完クリしました。土曜4面(通常クリア含む)、日曜2面で今日2面。1つのワールドに取り掛かった時はそのワールドを完クリするまで次の面に進まなかったので、不要な手戻りはなかったですね。とゆーか普段から「ロープレは時間かかるからやらない」って行ってる割には10時間くらいかけた気がします…。

感想。64,キューブをやってない俺としては昔のスーマリ1,2,3チックの横スクロールで取っ付き易かったです。仕掛けや隠し要素も工夫されているし、操作性は言うまでもなく。面白かったです。ただ「普通にクリアするだけなら簡単」なんですよ。ラスボスも初見でチビマリオでクリアできたし。手ごたえはどうか、と言われると正直なかった。簡単すぎた。それを隠し要素で難しく(楽しませようと)させているのが気に喰わない。だからもう一度プレイしようって気にはならないんですよねー。だって隠し要素が楽しみだとすると、ネタがバレれば楽しめないってことでしょ?せいぜい最速クリアにチャレンジするくらいか。


“DS Lite & Newスーパーマリオ” の続きを読む