今注目のニュース
田中みな実写真集“目標20万部”に爆問太田「ばーか!」
子供名義で貯金をしていた妻 「夫が放ったひどすぎる言葉」に絶句
問題化するタクシー配車アプリ「無断キャンセル」マナー無視の利用者で一般乗客も迷惑

正規表現単語

セイキヒョウゲン

  • 5
  • 0
掲示板をみる(28)
  • twitter
  • facebook
  • はてな
  • LINE
  • ほめる(5)
  •  
  •  
  •  
  •  
  • その他

正規表現、正則表現(英: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上で文字列結合をするアプローチでもいいのだが、その辺りは趣味の問題である。

関連動画

関連商品

関連項目

外部LINK

掲示板

ニコニ広告誘導

急上昇ワード

最終更新:2019/10/20(日) 18:00

ほめられた記事

最終更新:2019/10/20(日) 18:00

☆オススメの関連コンテンツ

動画

この記事名で動画を検索

静画(イラスト)

この記事名で静画を検索

ニュース

この記事名でニュースを検索

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

タグ編集にはログインが必要です。

タグ編集には利用規約の同意が必要です。

TOP