SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

マンガで分かるプログラミング用語辞典

「正規表現と文字セット」
~マンガでプログラミング用語解説

マンガで分かるプログラミング用語辞典(73)

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

解説

 正規表現は文字列のパターンを表現する方法です。検索や置換で用いられて、複雑な条件で文字列に一致させることが可能です。正規表現では、メタ文字、メタキャラクターと呼ばれる記号を使い、文字を抽象化して出現パターンを記します。

 この正規表現は、多くのプログラミング言語や、テキストエディタで利用できます。使用するプログラミング言語などの環境によって、微妙に仕様が違うので、使用前に確認が必要です。本記事では、JavaScriptの正規表現を中心に扱います(他のプログラミング言語の正規表現も、大きな差はありません)。

 今回は、その正規表現の中から、複数の文字のいずれでもよいという1文字を示す「文字セット」について紹介します。この「文字セット」は「クラス」とも呼ばれます。

 文字セットは、角カッコを使って書きます。角カッコの中に、複数の文字を書き、そのいずれかであるという1文字を示します。

記述 意味
[abcd] 「a」か「b」か「c」か「d」
[あいう] 「あ」か「い」か「う」
[nNん] 「n」か「N」か「ん」
[、。\n] 「、」か「」か「\n」(改行)

 また、「-(ハイフン)」を使うことで、文字コードの範囲を示すことも可能です。

記述 意味
[a-x] 「a」か「b」か……「x」
[ぁ-ん] 「ぁ」か「あ」か……「ん」ひらがな全範囲
[ァ-ヶ] 「ァ」か「ア」か……「ヶ」カタカナ全範囲

 これらの書き方は、混在させることも可能です。

記述 意味
[a-dxyz] 「a」か「b」か…「d」、あるいは「x」か「y」か「z」
[ぁ-んァ-ヶ] ひらがな全範囲とカタカナ全範囲
[ァ-ヶー] 「ァ」か「ア」か……「ヶ」のカタカナ全範囲に長音符

 このようにして書く文字セットは、繰り返しなどを示す、他の正規表現の記法と混ぜて書くことができます。

記述 意味
[aiueo]{3,} 母音のアルファベットを3回以上繰り返し

 また、文字セットを利用することで、改行を含んだ任意の一文字を示すこともできます。

記述 意味
[.\n] 「.」改行以外の任意の1文字と「\n」改行

 あるいは

記述 意味
[\s\S] 「ホワイトスペースにマッチ」と「ホワイトスペース以外にマッチ」(つまり全部の文字)

サンプル

 正規表現で「文字セット」を利用したコードを、JavaScriptで簡単に書いてみます。

<html>
    <head>
        <title>「文字セット」のサンプル</title>
    </head>
    <body>
        <pre><script type="text/javascript">
            // 「!」や「?」を「」に置換
            var str = "人生とは何だ!?\n友情!!\n努力!!!\n勝利!!!!";
            document.writeln("str1 : \n" + str);
            str = str.replace(/[!?]+/g, "。");
                // 「/[!?]+/g」で、
                // 「!」か「?」の繰り返しを
                // 「g」すべて
                // という意味
            document.writeln("\nstr2 : \n" + str);
        </script></pre>
    </body>
</html>
出力結果
str1 : 
人生とは何だ!?
友情!!
努力!!!
勝利!!!!

str2 : 
人生とは何だ。
友情。
努力。
勝利。
フィードバックお待ちしております!

 ご感想、解説して欲しい用語、解説内容のアドバイスなどございましたら、FacebookTwitterなどでお気軽に編集部までお寄せください。よろしくお願いいたします。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
マンガで分かるプログラミング用語辞典連載記事一覧

もっと読む

この記事の著者

柳井 政和(ヤナイ マサカズ)

クロノス・クラウン合同会社 代表社員http://crocro.com/オンラインソフトを多数公開。プログラムを書いたり、ゲームを作ったり、記事を執筆したり、マンガを描いたり、小説を書いたりしています。「めもりーくりーなー」でオンラインソフト大賞に入賞。最近は、小説家デビューして小説も書いています(『裏切りのプログラム』他)。面白いことなら何でもOKのさすらいの企画屋です。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8381 2015/02/10 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング