正規表現単語

15件
セイキヒョウゲン
2.0千文字の記事
  • 6
  • 0pt
掲示板へ

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

【スポンサーリンク】

  • 6
  • 0pt
記事編集 編集履歴を閲覧

ニコニ広告で宣伝された記事

biim兄貴 (単) 記事と一緒に動画もおすすめ!
提供: フライングスパゲッティモンスター
もっと見る

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

お絵カキコがありません

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

ピコカキコがありません

正規表現

23 ななしのよっしん
2017/03/30(木) 03:58:10 ID: aI6adsJ8T3
2chの専ブラNGいじってるうちに一通り覚えてしまったんだよなぁどうしてくれんのこれ
👍
高評価
0
👎
低評価
0
24 ななしのよっしん
2017/03/30(木) 04:14:20 ID: B5r0PDeG53
例のところにニコニコ特有なものも追加してほしいなー
👍
高評価
0
👎
低評価
0
25 ななしのよっしん
2017/12/09(土) 23:47:24 ID: ojfmHkFFhK
正規表現が本当に便利だと実感したのはフォームのバリデーション制御より置換の時

あと変換後の置換記号$のこと書いてないサイト多くて、当初は戸惑った
👍
高評価
0
👎
低評価
0
26 ななしのよっしん
2018/05/15(火) 16:04:19 ID: nAnyggO6+X
windowsメモ帳firefoxページ検索では使えないの検索表現?
別のテキストエディタやアドオン使うとかはなしで
👍
高評価
0
👎
低評価
0
27 ななしのよっしん
2018/05/17(木) 17:52:48 ID: 1NE0Ymlfk2
どちらも
おとなしvimとかemacsを使おう
👍
高評価
0
👎
低評価
0
28 ななしのよっしん
2019/10/12(土) 10:27:09 ID: ojfmHkFFhK
Excel正規表現使えたらどんなに便利なことか…なぜないのだ
👍
高評価
0
👎
低評価
0
29 ななしのよっしん
2021/03/19(金) 22:58:25 ID: gebOKG6qnF
2[0-4]時だけど(減った|はらへった|ハラヘッタ|ハラヘッタ)+
👍
高評価
0
👎
低評価
0
30 ななしのよっしん
2022/05/27(金) 08:40:31 ID: /XuzzeN3hA
大百科掲示板NG機能が欲しいというが多い中、ブラウザの置換アドオン正規表現を使えば近いことが出来そうな気がするんだけどどう登録すればいいもんだろう?

ソースでは掲示板書き込み単体を表記してるHTML

<dt class="st-bbs_reshead">
<a name="【レス番号】" class="resnumhead"></a>
<span class="st-bbs_resNo">【レス番号】</span>
<span class="st-bbs_name">【名前 デフォななしのよっしん】</span>

<div class="st-bbs_resInfo">

yyyy】/MM】/【dd】(【E】) 【hh】:【㎜】:【ss
(省略しています。全て読むにはこのリンクをクリック!)
👍
高評価
0
👎
低評価
0
31 ななしのよっしん
2023/06/03(土) 21:42:41 ID: Wbrv8ZX+a7
ニコニコブラで存在を知って知識ゼロの状態からだと「サルにもわかる正規表現入門」ってサイトが参考になった

1:矢印を使ったコメントは他のコメントへの反応(例「↑それな」「↓だったらお前がつくってみせろよ」)に使われがちなのでこれらをNGにしたい
2:一方で「ご↑は→ん↓」みたいなイントネーションを表現するコメント(これを嫌う人もいるだろうが)は残したい
反応コメント矢印は文頭につくことが多いので最初に文頭を表す^をつけて
^[←↑↓].*$
で反応コメントだけ非表示にできる
👍
高評価
1
👎
低評価
0
32 ななしのよっしん
2023/06/03(土) 21:44:55 ID: lQzMXowE4D
お、すごいな、ちゃんと勉強して使えるようにしたんだな
最初に入ったSESの会社なんてITエンジニア名乗りながら正規表現を使いこなせない連中がいたからなあ…
👍
高評価
0
👎
低評価
0