単語記事: 正規表現

編集

正規表現、正則表現(英: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


【スポンサーリンク】

携帯版URL:
http://dic.nicomoba.jp/k/a/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE
ページ番号: 465521 リビジョン番号: 1989470
読み:セイキヒョウゲン
初版作成日: 08/08/16 00:57 ◆ 最終更新日: 14/03/14 22:27
編集内容についての説明/コメント: 正規表現を使うと便利になる例を挙げてみる
記事編集 / 編集履歴を閲覧
このエントリーをはてなブックマークに追加

この記事の掲示板に最近描かれたお絵カキコ

お絵カキコがありません

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

正規表現について語るスレ

15 : ななしのよっしん :2014/06/30(月) 11:03:31 ID: xvDnv9D1Tg
正規表現とそれを活用したパターンマッチングがごっちゃになっている
更にその応用例としての検索・置換やフィルタリングもごっちゃになっている

まあ正規表現の話ならその方が内容にあっているかw
16 : ななしのよっしん :2014/11/26(水) 16:16:49 ID: 1DjJqMaqPN
ニコニコNG機能に必須なもの
17 : ななし :2015/09/12(土) 21:38:07 ID: iX8cwgnZaN
(.+)\1{4}
特定パターンが5回繰り返し

あたりをNG定できれば、連呼系を全部まとめて非表示にできるな
真っ赤な誓いいいいいいいいい」まで消えるのは情がないかもしれんが
18 : ななしのよっしん :2015/10/17(土) 22:40:33 ID: fwxTFRnWAp
連続した文字消すためにNG機能正規表現入れるか、
「何文字以上はNGにする」とかできるかして欲しい
19 : ななしのよっしん :2016/06/22(水) 08:43:18 ID: 16hgfTCXo7
これすごくほしいけど、プレミアムのみって意味あるのか?
一般の方が圧倒的に多いんだから一般が使えないんじゃ反応厨大して減らないだろ
それじゃ意味なくね?
20 : ななしのよっしん :2017/02/09(木) 11:45:43 ID: wg6DJ6Tq9p
正規表現使えるぐらい器用なならいちいち反応するような頭の悪いことはしない(決めつけ)
まあ簡易版として「末尾NG」とか「文字NG」は欲しいかな
正規表現上級者用ってことで
21 : ななしのよっしん :2017/02/25(土) 20:06:20 ID: XMcvhzwfeD
数学では
正規 normal
正則 regular
regular expressionなので正則表現のほうが一貫性があるが慣例なんだろうね
22 : ななしのよっしん :2017/02/25(土) 21:07:40 ID: tqdivmRzDb
1. normalは正規と訳される他、標準とも訳される。規格と訳す例もある。
意味は、正しい規格または標準的な形にしたもの、なっているもの、という感じ。
[数学]
正規直交系 orthonormal system ベクトルの正規化 normalization
正規分布 normal distribution 確率分布関数の正規化(標準化) normalization
行列の標準化 normalization 行列の標準形 normal form
[物理学]
波動関数の規格化 normalization

※標準は、standard, canonicalの訳でもある。
情報科学でも正規と訳すことは多い。
[情報科学]
(省略しています。全て読むにはこのリンクをクリック!)
23 : ななしのよっしん :2017/03/30(木) 03:58:10 ID: aI6adsJ8T3
2chの専ブラNGいじってるうちに一通り覚えてしまったんだよなぁどうしてくれんのこれ
24 : ななしのよっしん :2017/03/30(木) 04:14:20 ID: B5r0PDeG53
例のところにニコニコ特有なものも追加してほしいなー
ニコニコニューストピックス
  JASRAC許諾番号: 9013388001Y45123
  NexTone許諾番号: ID000001829