2012年12月10日月曜日

お勧め--はじめての正規表現講座

ようやく出席できました(^^;A
当初は「DTPの勉強会 特別編」を受講したのだから必要ね~と思ってました。
しか~し、やもさんの
はじめての正規表現講座参加してきました。お勧め。を読み、
こっ、これは参加してみる価値があるのでは? twitterでも評判は上々、他の方もblogで紹介されてます。受講した感想は「評判に偽りなし!」でした^^
まじお勧めです。積み重ね、積み重ねで丁寧に説明されてます。
と、ここまで書いて、このblogを読んでる人はほとんど受講したよなぁ~


以下は個人的メモ

[0-9]は0~9の数値にマッチするが、[〇-九]は漢数字〇~九にマッチしない。
理由は文字コード。文字コード上で連続していないから。
文字を扱う以上、文字コード表は必須。

メタ文字でキャプチャーとグルーピングの2つ使い方があるパーレン(括弧)

特にキャプチャー、これを理解できただけでも大きな収穫^^ 
初心者(自分)はいきなりゴールに達しようとし、それゆえ躓いてしまう。が、いきなりそこに行かず、段階を踏んで達する。その手順、考え方が理解できる。

例:01-2345-6789 を 01(23456789 に置換したい。

初心者は数値に挟まれたハイフンをいきなり全角括弧にと考える。それゆえ躓く。
順を踏んでパーツにバラし、数値、ハイフン、数値、ハイフン、数値を検索する。
数値は[0-9]+、ハイフンは-。
結果、[0-9]+-[0-9]+-[0-9]+でハイフン区切りの電話番号にマッチ。

|01|-|2345|-|6789|

コンピューターは灰色部分で区切って考えます。
で、区切られた数値部分をキャプチャー

([0-9]+)-([0-9]+)-([0-9]+で検索

区切り部分にパーレンを入れることで、括られた部分がキャプチャーされます。
左から順に\1、\2、\3

\1\2\3 で置換


鬼車

オジさん世代では「柔道一直線」で見た記憶が。。。高松英郎が演じてた車周作の異名だったんですね。極めて強力な正規表現エンジンだそうです。Jedit X2.32以降に搭載されてます。

\p{Han} ですべての漢字がマッチできる。
これはunicode上でアチコチに散らばっている漢字をマッチさせるに便利。


最後に
セミナーで使っていた正規表現アプリはイイ!

というのもコンピューターが考えるマッチした区切りが分かるから。
自分の使っているエディタだとこうはならない。ググって探してみたが見当たらなかった。
近いものがwebアプリのRegex Tester – RegexPal


講座『正規表現 次の一歩』は来年3月2日




1 件のコメント:

  1. 課題が届いた
    【問1】テキスト中で半角片仮名の類(半角中黒,半角音引きなども含む)を使っている箇所を調べたい。
    一文字単位でなく文字列単位で検索したい。
    どのような正規表現で検索すればよいか。


    【問2】句読点の後ろにスペースが入っていたらそれを削除したい。
    検索パターン,置換文字列をどのように設定すればよいか。

    以下を仮定する。
    ・句読点は「、」「。」「,」「.」の四種類とする。
    ・削除したいスペースは全角/半角両方とする。


    【問3】次の正規表現は,具体的にはどんな文字列にマッチするか。

    -?[0-9]+(\.[0-9]+)?

    返信削除