正規表現はどういったところで使われるのでしょうか?
先ほどQiiteにて”初心者歓迎!手と目で覚える正規表現入門”を閲覧しました。
正規表現ではテキストに書かれた文字列を(. ? + *)などのコードを書き文字を摘出していますが、実際にどんなところで使われるのでしょうか?その摘出された文字はデータベースに取り込まれたりするのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/23 11:08
2019/03/23 11:09
2019/03/23 11:54
2019/03/23 11:55
回答5件
0
ベストアンサー
正規表現には大きく三つの用途があります。
検索
まず一つは検索です。
正規表現は検索したい場面のほぼすべてで有用です。
単純な文字列検索でできることはすべて正規表現に書き直すことができますし、それ以上のこともできます。
たとえば電話番号、CSV、日時など、特定の法則にのっとって書かれたものを見つけることができます。
つまり「検索はどこで使えますか?」という質問に答えれば、あなたの質問の三分の一に答えたことになります。
しかし、答える必要があるでしょうか?
テキストエディタで検索したことはありませんか?
Google を使ったことはありませんか?
データベースを使ったことはありませんか?
Google やデータベースでは正規表現は使えませんが、使えたらとても便利でしょう。
そうして見つけたものを別のものに置換すれば修正になりますし、抽出して別の用途に使うこともできます。
抽出したものは無条件でデータベースに取り込まれるのではありません。
どのように使おうが使用者の自由です。
バリデーション
正規表現のもう一つの用途は、入力されたデータが正しいかどうかをチェックすることです。
例えば数字を求めているところに「あいうえお」と入力されても困るでしょう。
「パスワードを入力してください」と言われて入力した時に「短すぎます」「複雑さが足りません」など言われたことはありませんか?
「電話番号を入力してください」と言われて入力した時に「入力が不正です」と言われたことはありませんか?
このような場合に正規表現が使われています。
分析
三つ目の用途は、データの分析です。
例えば次のようなデータがあるとします。
2018/12/1 鉛筆(100円) 2019/1/20 消しゴム(120円) 2019/1/25 切手(82円) 2019/2/5 切手(164円) 2019/3/24 鉛筆(200円)
正規表現を使えば、このようなデータを簡単に分析し、月ごとの金額の合計を求めたり、何をどのくらい買ったのかを求めたりすることができます。
サーバーなどは実行ログを記録しますが、それを分析するのにも良く使われます。
投稿2019/03/23 23:51
編集2019/03/23 23:53総合スコア28660
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ログの集計や調査でよく使います。
例えば 下記のような一般的なmaillogの送信元と送信先を1行で表示したいとします。
maillog は from と to の行が別れていて、 queueid が一致するメールが同じメールのログとなります。
Mar 23 19:04:58 vps postfix-inbound/qmgr[10339]: 5120C546D2E1: from=<bounce-000609027-000008849b84a6@fc5219.cuenote.jp>, size=70068, nrcpt=1 (queue active) Mar 23 19:04:59 vps postfix-inbound/lmtp[5774]: 5120C546D2E1: to=<recruit@example.com>, relay=127.0.0.1[127.0.0.1]:24, delay=6.8, delays=6.7/0.02/0.01/0.05, dsn=2.0.0, status=sent (250 2.0.0 <recruit@example.com> CLQ9AcsEllyPFgAA4Pc6PQ Saved) Mar 23 19:11:58 vps postfix-inbound/qmgr[10339]: BC892546D2E1: from=<ds-id0jtlc31z6hc.fb8d9453@bounce.inte.mailds.jp>, size=117094, nrcpt=1 (queue active) Mar 23 19:11:58 vps postfix-inbound/lmtp[6511]: BC892546D2E1: to=<recruit@example.com>, relay=127.0.0.1[127.0.0.1]:24, delay=6.6, delays=6.4/0.11/0.02/0.1, dsn=2.0.0, status=sent (250 2.0.0 <recruit@example.com> RcEHDG4GllxwGQAA4Pc6PQ Saved) Mar 23 20:19:04 vps postfix-inbound/qmgr[10339]: B718A546D2E1: from=<dovecot-bounces@dovecot.org>, size=10238, nrcpt=1 (queue active) Mar 23 20:19:04 vps postfix-inbound/lmtp[13650]: B718A546D2E1: to=<itml@example.com>, relay=127.0.0.1[127.0.0.1]:24, delay=5.2, delays=4.5/0.53/0.09/0.07, dsn=2.0.0, status=sent (250 2.0.0 <itml@example.com> Sc2oLygWllxTNQAA4Pc6PQ Saved)
queueid は任意の文字列なので \w+ や \S+ などの正規表現でマッチさせると抽出しやすいです。
perlでの抽出例 cat maillog | perl -ne '{if(/postfix.*: (\w+): ((from|to)=\S+>),? /){$k{$1}{$3}=$2;}}END{foreach(sort keys %k){print "queueid=$_ $k{$_}{'from'} $k{$_}{'to'}\n";}}' queueid=5120C546D2E1 from=<bounce-000609027-000008849b84a6@fc5219.cuenote.jp> to=<recruit@example.com> queueid=B718A546D2E1 from=<dovecot-bounces@dovecot.org> to=<itml@example.com> queueid=BC892546D2E1 from=<ds-id0jtlc31z6hc.fb8d9453@bounce.inte.mailds.jp> to=<recruit@example.com> \S+ (|) \w+ .* ,? などが正規表現です。
任意の文字列をキーとした集計には必須ですね。
投稿2019/03/23 11:41
編集2019/03/23 11:44総合スコア2840
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
正規表現はどういったところで使われるのでしょうか?
正規表現を解釈する処理を持っている言語/ツールで使われています。
【正規表現 - Wikipedia】
https://ja.wikipedia.org/wiki/正規表現
投稿2019/03/23 11:28
総合スコア69407
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
もしも正規表現を学びたい際には、以下のサイトが非常に分かりやすいので、良かったらぜひ試してみてください。実用例も豊富なので、僕がダラダラ説明するより数百倍分かりやすいと思います。
https://qiita.com/jnchito/items/893c887fbf19e17d3ff9
投稿2019/03/24 17:13
総合スコア1408
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
正規費用源 利用場面
で google 検索してみました。
参考情報
- プログラマーが正規表現を使いこなすメリットとは? 『正規表現辞典 改訂新版』著者に訊く
https://codezine.jp/article/detail/10855
...
個別のアプリケーションにおける入力値検証などに利用することはもちろん、アプリケーションやミドルウェアのトラブルシュートにおけるログの分析や、既存データのクレンジングなどに活用しています。
ログ分析では必要なログのみを抜き出す、あるいは不要な部分を刈り取るために正規表現は欠かせません。データのクレンジングでは不要なデータを排除する、あるいは不正なデータを正しい形式に整形するといった作業が必要となりますが、このような局面でも正規表現はそのパワーを存分に発揮してくれます。
...
- 【徹底解説】正規表現で作業効率化!
https://truria.xsrv.jp/infoCatch/2018/05/04/post-122/
...
例えば、「以下の文字列群から、値段をすべて500円にしてほしいと」言われたとします。
商品A 値段500円 備考:からい
商品AX 値段6000円 備考:すっぱい
...
以下のように置換すれば、一瞬で仕事が終わります。
サクラエディタで置換してみましょう。
置換前:値段.*円
置換後:値段500円
...
投稿2019/03/23 22:49
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。