【IT】プログラマーが正規表現を使いこなすメリットとは?
■ このスレッドは過去ログ倉庫に格納されています
皆さん、正規表現は使っていますか? 開発者にとってテキスト処理は面倒な場面も多いですが、正規表現を駆使することで一気に効率化することもできます。今回、『正規表現辞典 改訂新版』の著者・佐藤竜一さんに、正規表現を使うメリットや本書についてうかがいました。
――『正規表現辞典 改訂新版』は目的別の検索ができるリファレンスですが、正規表現の歴史や背景についても解説されています。今回は佐藤さんに本書についてお尋ねしますが、まずはご自身のことを教えてください。
佐藤:勤務先はいわゆるSIerですので、各種システムの企画・構築を主業務としています。主に担当しているのは企業向けのアプリケーション開発基盤の構築や、個別システムに対するアプリケーション・アーキテクチャの立案といった分野ですね。
世間的には「アーキテクト」と呼ばれる職種になりますが、私自身はプログラマーとして個別の問題と向き合い、頭を絞るほうが好きです。
――仕事では正規表現をどう活用されているのでしょうか。
佐藤:個別のアプリケーションにおける入力値検証などに利用することはもちろん、アプリケーションやミドルウェアのトラブルシュートにおけるログの分析や、既存データのクレンジングなどに活用しています。
ログ分析では必要なログのみを抜き出す、あるいは不要な部分を刈り取るために正規表現は欠かせません。データのクレンジングでは不要なデータを排除する、あるいは不正なデータを正しい形式に整形するといった作業が必要となりますが、このような局面でも正規表現はそのパワーを存分に発揮してくれます。
読みやすさやメンテナンスのしやすさで差がつく
――プログラマー(開発者)として、正規表現を使いこなすのと使いこなさないのとでは、どんな差がつきますか?
佐藤:テキストを相手にする処理では、正規表現を活用することで簡潔かつ分かりやすい記述が可能となるケースが多々あります。正規表現をうまく使えないプログラマーは、ちょっとした処理でもループでテキストを文字単位に分割し、複雑な条件分岐を処理中に記述してしまいます。
このようなプログラムは確かに動作するかもしれませんが、読みやすさやメンテナンスのしやすさという観点で見れば大きなマイナスとなるでしょう。
「正規表現を使いこなす」という質問からすると拍子抜けされるかもしれませんが、正規表現を使って解決すべき現場の問題の多くは、基本正規表現と拡張正規表現の範囲でも十分まかなえます。
ですので、本当に基本的な部分をちゃんと理解するだけでもプログラマーとしては大きなアドバンテージになります。大切なのは個々のメタキャラクタの意味をきちんと押さえること、そして実践を繰り返すことでしょう。最初はとっつきにくく見える正規表現も、慣れてくるうちに自然と記述できるようになります。
――開発者以外でも正規表現を使えることでどのような利点がありますか?
佐藤:現在は開発者以外の方でも、各種のクラウドサービスなどのツールやリソースを活用して生産性の向上、さらにはビジネス上の成果を求められる時代です。処理対象の指示や結果の加工に正規表現が必要とされる、あるいは正規表現を使うことでより柔軟な処理を実現できるといった局面は今後も増えてくるはずです。
たとえば、RPA(Robotic Process Automation)ではExcelやPDFファイルから特定のデータのみを抜き出し、妥当性を判断し、加工したうえで最終的な結果を得るといったことが普通に行われます。このような処理は、それこそ正規表現が最も得意とする領域です。
結果に辿りつく過程を理解してほしい
――2005年に出版された初版と、この改訂版が出る間に、どのような変化がありましたか?
佐藤:本書の前書きにも書きましたが、Unicodeが文字コードの標準的地位を獲得したことです。文字の選択はUnicodeのプロパティにもとづいて行われるため、たとえば1文字の数字を表す「\d」はUS-ASCII以外の数字にもマッチすることが当然になりつつあります。
また、絵文字のように複数のコードポイントを消費して目に見える1文字を表すケースもこれまで以上に増えました。本書でも可能な限り、これらのポイントについて説明しています。
https://codezine.jp/article/detail/10855 >>408
工業高校卒が、なんでプログラマー&正規表現スレに? 独自言語とか、もしかして
高専ロボっ子とかそっちかね? ちなみに自分は専門卒と言っても機械工学科で、
ソフトや電子回路設計とか全部独学。
大卒が嫌いというか、大学無償化に賛成の国民も馬鹿だけど、この国の大学教授とか
研究、特に情報処理系に関してはほとんど詐欺なのを知ってるから。
文科省の官僚が裏口入学の見返りに口利きで逮捕されてるけど、世間は時系列を知ら
ないだけで、就職に失敗した大卒プー太郎に、なぜか独立行政法人の予算が付いて、
採択公表する時は、晴れて大学の特任教授になってたりするんだぜ。Googleで検索
しても絶対出てこないけどな。 >>409
工業でもプログラムやるぞ
そういう仕事にもつくしな
俺は機械組立やめて転職
正直そのまま続けてたほうが収入はでかかった
仕事は今のデスクワークのほうが楽だけどな >>391
その劣化コピーがスタート地点だよ
劣化コピーにすらなれない奴らは毎回宝くじ買っては
「あー1000000000円当たらねーかなー」とくだらないこと考えてる メリットもクソも正規表現くらい使えないプログラマーなんてクソ過ぎるだろ スレが伸びてると思ったら専門卒の爺の自分語りかよw ちょっと分かりにくく書いただけで
レビューなんてソース読まずにOK出してたな 形態素解析の中身とか正規表現の地獄みたいになってるのかな 噛みつきはしないんだから
怖がらずに正規表現撫でてみて >>418
無理だ
自分で書かないといけないんだから
馬鹿には無理だ
土方プログラミングみたいなフローチャート仕事とは違うんだ
フローが非直感的すぎるんだ馬鹿には
バックトラックとか理解できるわけない 5、6桁の数字の因数分解が暗算でできる程度の頭がないと無理 wordはなぜ正規表現を部分的にしかサポートしていないのか
不便だったからマクロで正規表現全部使えるようにしたわ >>422
プログラマーでない人だと逆に混乱するからだろ プログラマーでない人 最初から使わない
プログラマーな人 使えるとあれば、使おうとする
あるべき姿 全く対応しないか、完全に対応する 正規表現をディスる人って、自称PCに詳しいニワカがワイルドカードのつもりで使って大失態→正規表現は糞、みたいなのが多そう 芸術的な物は許されるが、低俗でひわいな物は公序良俗に反する >>425
いまさら、正規表現とかアルゴリム辞典とか、知ってて当たり前の知識で、しかもどちらも他人の
成果物の寄せ集め本にしただけなのに、まるでその分野の第一人者気取りで、ドヤ顔してるから、
ディスられているだけ。 >>425-426
性器社員と非性器社員、低俗で卑猥なのは、どっち? 初歩、基本だけでも知ってたほうが得することが多いのに、
その事を理解できるまでに費やすエネルギーが出ない、予約録画さえできないのが普通に居るくらいだし。 知ってて当たり前なら知ってろよー
知らなきゃディスられるの当たり前 正規表現も使えないプログラマーとかおらんだろ今時
淘汰される時代 プログラマー板みると正規表現使えないエンジニアや三項演算子知らないエンジニアがいて安心するわ >>237
つnkf
このレベルの変態はゴロゴロいる
つhttps://twitter.com/search?f=tweets&q=%23%E3%82%B7%E3%82%A7%E3%83%AB%E8%8A%B8
https://twitter.com/5chan_nel (5ch newer account) >>440
古いバージョンのnkfは暗黙の変換がdefaultで入ってるから要注意コマンド
必ずバージョンをチェックしよう わしも安定のsedが好みだな。あるいはperlかな
文字コード変換が目的でないとnkfは使わない >>8
1行分だけならとか三項演算子あるけどなるべくやめとけ
iOSのサーバ証明書バグみたいになる 正規表現もローカルルールがあって使える使えないがあるからなぁ 最初sedで覚えた私は、perlの正規表現みて愕然とした経験がある
もちろn大概の正規表現はそのまま使えたけどね
拡張された仕様をみて、今までの苦労は何だったのだろうとショックだったな perl5 rulesが全く流行らないのがw
悪くないがなんか違うんだよね 正規表現とSQLはおぼろげでもいいから覚えといて損はない
面倒なところはクイック・リファレンス的なの読むのでもググるのでもいいけど SQLはそれが使用可能な環境でないと無理だが
正規表現って、普通にエディタでサポートしているから
使おうと思えばどこでも使える >>41
その100倍ぐらい長くて複雑なの書いた事ある。
今自分で読んでも分からん awkはちょっとした集計をしてみる位なら良いんだけど
変数のスコープが使いにくいので大きいものは作れない ■ このスレッドは過去ログ倉庫に格納されています