このブログのはてなブックマーク数 このエントリーをはてなブックマークに追加

知らなきゃ絶対損するPCマル秘ワザ

知らなきゃ損するPC情報を分かりやすくメモする個人ブログ。
『月,水,金』の週3回更新!(予定)

このブログ内をキーワードで検索することもできます。
Loading



最新記事
  • エクセル:式で算出した数値をマウスだけで固定する方法 (06/10)
  • Firefox:アドオン「テキストリンク」が動かなくて困った話 (06/08)
  • 「正規表現」を超わかりやすい図に変換してくれるサイト (06/05)
  • 「正規表現」の勉強のために「メタ文字」をまとめてみた (06/03)
  • iPhone:無音シャッター,高画質,広告なし の無料カメラアプリ (06/01)
  • 管理人より
    1600万アクセス突破、ありがとうございます。

    「正規表現」の勉強のために「メタ文字」をまとめてみた

    このエントリーをはてなブックマークに追加
    イメージ


    こんにちは、さち です。

    「正規表現」って知っていますか?
    簡単に言うと、文などから特定の文字を探し出す仕組みです。
    (厳密には違うが、このような使われ方が多い)

    正規表現は、主にプログラミングで使われますが
    テキストエディタの「検索」「置換」、
    ツイッタークライアントの「ミュートワード」、
    2ちゃんねるブラウザの「NGワード」 などで使える場合もあり
    普通の人でも知っていると意外と役立ちます。

    ただ、「正規表現」には色々な記述ルールがあって
    イマイチちゃんと把握できていない…。

    ということで、今回は
    「正規表現」の記述方法についてまとめていきます。
    ものすごく備忘録です。




    「メタ文字」を使いこなそう

    「正規表現」には「メタ文字」と呼ばれる特殊な文字があり
    この「メタ文字」を使うことで複雑な文字列を表現します。

    正規表現を使いこなすには「メタ文字」の使いこなしが必須!

    分かりやすい簡単な「メタ文字」を使うだけでも
    そこそこ複雑な文字列を表現できるようになります。

    もちろん、「メタ文字」を今すぐ覚える必要はありません。
    使っているうちに自然と覚えられるので気楽にいきましょう!




    1. 「文字種」を指定するメタ文字

    表

    どの「文字種」が使われているかを指定するメタ文字です。

    上のような表記であらわせる文字数は「1文字」だけ。
    文字数の指定には別途繰り返しを意味するメタ文字が必要です。

    例えば、「.(ドット)」は任意の一文字をあらわします。
    「.(ドット)」はよく使うのでこれだけは絶対に覚えておきましょう。

    ちなみに、「-(ハイフン)」を使った表記は
    「文字コードが XXXX から YYYY までの文字」という意味。

    「ひらがな」「カタカナ」のスタートが拗音(小さい文字)である理由は
    その文字種の文字コードが拗音からはじまるためです。
    (「半角カタカナ」の表記も同様の理由)




    2. 「繰り返し」を指定するメタ文字

    表

    文字の「繰り返し」を指定するメタ文字です。

    例えば、数字が0回以上の繰り返すという正規表現は
    [0-9]*」のように記述します。

    「*」「+」による繰り返しはよく使います。
    それぞれ「0回以上」「1回以上」という違いがあるので
    上手く使い分けましょう。

    「?」は、例えば「http」と「https」両方を対象にしたい場合
    「s」は有っても無くてもよいものと言えるので
    「https?」のように使います。




    3. 「位置」を指定するメタ文字

    表

    文字列がどの「位置」にあるかを指定するメタ文字です。

    例えば、先頭が「http」からはじまるという正規表現は
    ^http」のように記述します。

    基本は、先頭,末尾 を意味する
    「^」「$」さえ知っていれば大体のことは間に合います。
    ただし、「^」は「[ ] 」内だと否定の意味になるので注意。

    ちなみに、「\b」の「単語境界」とは単語の先頭,末尾のこと。
    例えば、正規表現で「e\b」とした場合
    「cute and clever elichika」で該当するのは
    「cute」の末尾の「e(赤字部分)」だけで、他の「e」は該当しません。




    4. 「選択」をあらわすメタ文字

    表

    「AまたはB」ような「選択」をあらわすメタ文字です。

    例えば、正規表現で「No(zomi|ntan)」と書いた場合
    「No」の続きは「zomi」と「ntan」から選択することになり
    「Nozomi」と「Nontan」という2つの文字列をあらわします。

    普通なら2つの文字列を別々に書く必要があるものを
    一つの正規表現であらわせるわけです。

    ちなみに、「選択」は複数使用できるので
    「No(zomi|ntan|nnon)」のようにさらに追加できます。




    5. エスケープ文字

    表

    「.(ドット)」をはじめとした「メタ文字」で特殊な意味を持つ文字は
    そのままでは「普通の文字」として使うことができません。

    例えば、正規表現で「www.lovelive.jp」という文字列を作るには
    「www\.lovelive\.jp」のように
    「.(ドット)」の前に「\」を書く必要があります。

    このような方法を「エスケープ」と言います。

    また、「\」自体もエスケープを意味する特殊な文字なので
    普通の文字として「\」を使うには「\\」と書く必要があります。

    ちなみに、「\」はフォントによって表示が異なる文字です。
    海外のフォントでは、半角の「\(バックスラッシュ)」
    日本語のフォントでは、半角の「¥(円記号)」で表示されます。




    6. その他のメタ文字

    操作画面

    特殊な意味を持つメタ文字です。

    「改行」「タブ」「空白」を意味する
    「\n」「\t」「\s」を知っていれば大体は何とかなります。
    (アルファベットを大文字にすると「否定(Aでない)」の意味になる)

    「\d」「\l」「\u」「\w」などは記述を省力化できて便利ですが
    文字種の指定でも間に合うので無理に覚えなくてもいいです。




    「\」が付くメタ文字が機能しない場合

    例えば、JavaScript の「文字列リテラル」の部分
    つまり「"」や「'」で囲まれた文字列を記入する部分では
    正規表現の「\n」「\d」「\\」などが正常に機能しません。

    そのような場合、「\」を「\\」に置き換えてみて下さい。
    「\n」→「\\n」,「\d」→「\\d」,「\\」→「\\\\」といった感じです。
    これで正常に機能するようになると思います。
    var re = RegExp("\d+円");
           ↓
    var re = RegExp("\\d+円");

    ちなみに、動かない原因は
    JavaScript においても「\」がエスケープを意味する文字だからです。

    例えば、文字列リテラルに書いた「\d」は
    JavaScript によりエスケープ文字として扱われます。
    しかし、JavaScript には「\d」という表記は存在しないので
    「\」が削除され、単なる「d」に変換されます。
    結果、「d」が正規表現に送られるため正常に機能しないわけです。
    (同様に、「\\」は「\」に変換されてから正規表現に送られる)

    ちなみに、次のように文字列リテラルを使わない方法で記述をすれば
    通常どおりに記述をしても機能します。
    var re = /\d+円/;

    文字列リテラルに正規表現を記述する場合は
    そのプログラミング言語によるエスケープに注意しましょう。




    正規表現については私もまだまだ勉強中です。
    誤りなどがありましたら教えて頂けるとありがたいです。

    今回、紹介したメタ文字については
    比較的簡単で使いやすいものに絞っているので
    物足りない方は別途検索して勉強してみて下さい。








    このエントリーをはてなブックマークに追加




    管理人だけが読めるコメントにする(返信はしません)
    【お知らせ】
    • コメントは承認制です。反映に時間がかかります。
    • Yahoo!BBはスパムコメントが多いため一部規制中です。
    • URLを含む投稿はできません。必要な場合は最初のhを削って下さい。
    • Android は使ったことがないので質問を頂いても答えられません。
    • その他詳細はこちら





    記事別の週間アクセス数ランキングです。こちらの記事もぜひ読んでみて下さい。

    2008-2015 知らなきゃ絶対損するPCマル秘ワザ  ブログ記事の無断転載、画像への直リンクはご遠慮下さい。

    ブログパーツ