タグ

正規表現に関するyohane00のブックマーク (8)

  • 無料&登録不要で正規表現を図示してくれる「Regexper」を使ってみた

    アプリ開発の場面では、入力されたテキスト内に誕生日などの特定パターンの文字列が含まれているかを確認したり、別の文字列に置き換えたりするときに、正規表現は必須です。しかし、正規表現を誤ってしまうと、アプリケーションによっては、データを破壊してしまったり、誤作動を起こすリスクがあるのも事実。このため正規表現を変更する場合、事前に試験用の環境で試すのが普通ですが、開発現場によっては、試験用の環境であっても簡単に適用できない場合や、番用の環境しかないなど、試す場面が限られることが考えられます。このとき、机上での検証を行いますが、人の手による検証は、どれだけ実力のある人がチェックしても誤るリスクがあり、不安を拭うことはできません。「Regexper」を使えば、入力した正規表現を無料で、機械的に図示して、読みやすくしてくれるとのこと。複雑な正規表現を入力しても読みやすくなるのか、実際に使ってみました

    無料&登録不要で正規表現を図示してくれる「Regexper」を使ってみた
  • 正規表現のパフォーマンスの話をされても全くピンと来なかった僕は、backtrackに出会いました。 - Qiita

    /^.*-.*$/ #悪い(表現方法として"短い"けど) /^\d{3}-\d{4}$/ #良い(表現方法として"長い") となります。 (もちろん、上のパタンは、デタラメなものも引っかかるので、正しくないけど、そういうのはいったん無視。 感覚的には下の方がよさそうだけど。どういうことですか? ステップ数を見てみる! https://regex101.com/#pcre この素晴らしいサイトを利用します。 123-4567とのマッチングを考えます。 まず、/^\d{3}-\d{4}$/ はこんな感じで、7ステップ 一方、/^.*-.*$/ は..12ステップ ということで、.* の方がステップ数が増えてパフォーマンスが悪くなっていそうです。 (実際パフォーマンスはこのステップ数に依存しそうなので、悪くなっていると思います。後で時間測ります。 バックトラック(BACKTRACK)と出会いまし

    正規表現のパフォーマンスの話をされても全くピンと来なかった僕は、backtrackに出会いました。 - Qiita
  • 正規表現のデバッグに重宝した神サイトを紹介してみる | DevelopersIO

    はじめに こんぬづは、バーチャルYoutuberの中では圧倒的に輝夜月ちゃんが好きな田中です。特にクリスマスのやつが好きです。 さて今回は、今年正規表現のデバッグに重宝した Online regex tester and debugger: PHP, PCRE, Python, Golang and JavaScript を紹介します。 Online regex tester and debugger: PHP, PCRE, Python, Golang and JavaScript サイトはこんな感じ。 以下のような特徴があります。 正規表現のデバッグ 記述した正規表現の解説が見れる 正規表現に対して入力した文字列の、マッチした部分が見れる 正規表現のクイックリファレンスがついている たとえば /[a-zA-Z]{0,3}+[0-9]{0,3}/ みたいな正規表現があったとき。マッチして

    正規表現のデバッグに重宝した神サイトを紹介してみる | DevelopersIO
  • 正規表現をサッと確認するのに重宝した神サイトを紹介してみる | DevelopersIO

    はじめに こんぬづは、ゲーム用のPCを東京に置いているため、実家に帰ってくるとゲームができなくてしんどい田中です。こういうときに限って、ゲームの実況動画を見てしまったりして余計に心を痛めています。 さて今回は、今年正規表現をサッと確認するのに重宝した Regexper を紹介します。 Regexper こんなサイトです。とてもシンプル。 以下のような特徴があります。 正規表現を図で表示してくれる 表示した図をダウンロードできる 正規表現を図で表示してくれる 入力欄に正規表現を入力して、Displayボタンを押すと、以下の画像のようにその正規表現のパターンを図示してくれます。 どんな範囲でパターンマッチしてくれるのかがとても見やすくなります。 表示した図をダウンロードできる 入力欄の右下にあるDownloadボタンを押せば、表示した図をダウンロードすることができます。 例えば正規表現の仕様を

    正規表現をサッと確認するのに重宝した神サイトを紹介してみる | DevelopersIO
  • 正規表現をチョムスキー言語学まで遡って理解する(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Exploring the Linguistics Behind Regular Expressions 原文公開日: 2017/11/20 著者: Alaina Kafkes 訳注: 原文タイトルは「正規表現を背後で支える言語学を理解する」といったニュアンスです。翻訳記事タイトルでは内容を把握しやすくするため「チョムスキー」を加えました。 正規表現は、新人/ベテランを問わずプログラマーに恐怖心を呼び起こします。私が最初に正規表現(しばしばregexと略記されます)というものを目にしたときも、()だの*だの文字だの数字だので構成された祈祷書を読んでいるうちにめまいがしてきたのを覚えています。正規表現はナンセンスで理解不能なものに思えたのです。 正規表現は、高度なコンピュータサイエンス(CS)学科で扱われるのだろうと思っていました。

    正規表現をチョムスキー言語学まで遡って理解する(翻訳)|TechRacho by BPS株式会社
  • 40行以内で正規表現エンジンを構築 | POSTD

    最終目標は、最小限のコードで正規表現ユースケースの大部分をカバーできるくらい十分堅牢な構文を提供することです。 1文字と一致させる まずはじめに、1文字のパターンと1文字で構成される文字列を引数に取り、一致するかしないかを示すブール値を返す関数を作成してみます。1文字のパターンである . はワイルドカードとされ、任意の文字リテラルと一致します。 下記のようなかんじです matchOne('a', 'a') -> true matchOne('.', 'z') -> true matchOne('', 'h') -> true matchOne('a', 'b') -> false matchOne('p', '') -> false function matchOne(pattern, text) { if (!pattern) return true // 任意テキストが空パターンと一致

    40行以内で正規表現エンジンを構築 | POSTD
  • 恐らくそれなりに正確なGoのApacheログパーザーを書いた | おそらくはそれさえも平凡な日々

    https://github.com/Songmu/axslogparser/ 下記のようにすれば、ApacheログかLTSVログをよしなにパーズしてくれます。 import "github.com/Songmu/axslogparser" log, err := axslogparser.Parse(line) Apacheのログ形式として知られるアクセスログはいろいろな形式があり、正確なパーズが何気に困難であることが知られています。よく使われるのは以下のような形式です。axslogparserはこれらの形式をサポートしています。 commonログ commonログの先頭にvhostが付いたもの combinedログ combinedに独自フィールドが追加されたもの フィールドの区切り文字は一般的には半角スペースが使われますが、パーズし易さのためにタブ文字が使われることもあります。現在は

    恐らくそれなりに正確なGoのApacheログパーザーを書いた | おそらくはそれさえも平凡な日々
  • [コラム] 正規表現の先読み/後読みは、どう考えても名前が悪いので、呼称禁止令を出してルックと気軽に呼んでみませんか。 - Qiita

    [コラム] 正規表現の先読み/後読みは、どう考えても名前が悪いので、呼称禁止令を出してルックと気軽に呼んでみませんか。regex 正規表現の "先読み" / "後読み" を、分かりにくいと感じるすべての人にお送りします。 --- 追記:2017/06/04 コメントにて、ご指摘を頂いております。 当記事の解釈には誤りがあります。コメントのご指摘内容をご覧いただければ幸いです。 当記事の主旨としては、"先読み・後読み" よりも "ルックアヘッド" の方が、意味を捉えやすいのでは?というものでしたが.. そもそも私の、「lookahead」の解釈(とくに、look の主語はどれなのかという部分だと思います)に、勘違いがありました。 ですので、いまのところ当記事の主題は、「"先読み" でも、"ルックアヘッド” でも、どちらでもよいけど、しっかりと厳密に理解しよう!(反省)」となります。 コメント

    [コラム] 正規表現の先読み/後読みは、どう考えても名前が悪いので、呼称禁止令を出してルックと気軽に呼んでみませんか。 - Qiita
  • 1