ニコニコ大百科モバイル

7/2(月)よりスマホまたはPCでアクセスした場合、各デバイス向けのサイトへ自動で転送致します


正規表現


ヨミ: セイキヒョウゲン
掲示板をミル!
27カキコ!

正規表現、正則表現(英:Regular Expression)とは、文字列の集合を表すための表現法である。形式言理論の分野では正則表現、電算機上での文字列処理では正規表現と呼ばれる事が多い。


概要


正規表現を用いると、一定の規則に従った文字列の集合を一つの文字列で表現することができる。例えば、「Aから始まりZで終わる、アルファベットからなる10文字文字列」の集合は、 A[a-zA-Z]{8}Z というに表現できる。これを検索条件として定すれば、ワイルドカードを使用するよりも詳細な検索が行える。

正規表現は文字検索をするのに大変便利なツールだが、言間・環境間の方言が非常に多いので、利用する際は注意が必要である。多くの言環境に搭載されている正規表現はPerl互換だが、特定文字クラスが存在しなかったり、メタ文字の意味が違ったりしていることがあるのが事態を厄介にしている。なお、一部の記法は本来の正規表現の範囲から外れていることがある。


主な正規表現の例



使ってみよう



表記のブレを吸収する


モデルケースとして、「好きなアニメキャラクターへの投票コメント欄で受け付ける」というものを考える。この時、ユーザーは思い思いのキャラクター名をコメントしていくわけだが、そこは人間が手打ちしたものなので、若干の表記ブレが混じってしまう。例えば、以下は全て同じキャラクターへの投票である。

これを普通に数えようとすると、一度各表記ごとに集計し、各表記ごとの投票数を合計する、というアプローチを取る。

が、これは非常に面倒くさい。可であればメジャーな表記ブレの集計については一発でまとめてしまいたい。そこで使うのが正規表現である。

((キュ|きゅ)[ウゥうぅ](べえ|ベエ)|QB)

これで大まかには表記ブレを拾うことができる。誤字脱字などについては拾いきれないが、大した数ではないだろうから、後で適宜対応すればよい。もし意外と数が多いのなら、正規表現を少しいじってあげればよい。

なお、うまくマッチする正規表現は上記の例以外にもいくらでも考えられる。よりスマートな表現がないか考えてほしい。


特定のフォーマットのテキストを別のフォーマットに変換する


泥臭い仕事をするシステムエンジニアにありがちなケースを挙げる。プログラムの中で用いる大量のエラーメッセージの定義が、以下のような表でまとめられている。

通し番号 ID メッセージ
1 ERR_NANTOKA hoge error
2 ERR_KANTOKA piyo error
3 ERR_UNTARA huga error
4 ERR_KANTARA foo error
5 ERR_KAKUKAKU bar error
6 ERR_SHIKAZIKA baz error

このような内容が数あるのだが、これを全てプログラム定数値に直さなければならない。しかし、数を手作業で変換するのは面倒だし、何より絶対にどこかで間違いが発生する。そこで、正規表現を使って一括で置換するわけである。

検索文字列:.+\t(.+)\t(.+)

置換文字列:    public static final String \1 = "\2"

表の内容をテキストエディタに貼り付け、上記の置換をかけてやると一発で変換が終了する。Excel上で文字列結合をするアプローチでもいいのだが、その辺りは趣味の問題である。


関連動画



■sm4699513[ニコ動]


関連商品


■az4873113598
■az4797328509
■az4774126713


関連項目



外部LINK



最終更新日: 14/03/14 22:27
タグ検索 パソコン版を見る


[0]TOP
ニコニコ動画モバイル
運営元:ドワンゴ