タグ

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

  • 正規表現を超える - あどけない話

    まずは、Audrey さんが言った Haskell の殺し文句を思い出して頂きたい。 正規表現ベースのパーサはメンテナンスしにくいのに気づいた? Parsec を使って 15分で Perl6 の完全なパーサを書く方法を勉強しましょう。 15分というのは誇張が入っていると思うが、正規表現が保守しにくく、Haskell の Parsec は強力で保守し易いのは事実だ。その理由を Perl と Haskell のコードを示しながら説明してみたいと思う。 Perl を愛する方に:この記事は Perl を攻撃するために書いたのではない。Perl を選んだのは、正規表現を広めた言語であり、僕がそれなりに Perl のコードを書けるためである。この記事の目的は、正規表現よりも関数型パーサー(Parsec)の方が優れていると示すことだ。 例題 この記事では例題として、IPv4 アドレスを解析する関数を書く

    正規表現を超える - あどけない話
  • 鬼雲に非包含オペレータを実装した話 - Qiita

    概要 田中哲さん(@tanaka_akr)が以前提案された「非包含オペレータ」というものを(実験的に)鬼雲に実装しました。これを使うと例えば C 言語のコメントにマッチする正規表現などが簡単に書けるようになります。 ここでは、非包含オペレータとは何か、また今後の見通しなどについて説明します。 非包含オペレータとは? 非包含オペレータは田中さんが約 9 年前に発表された、正規表現の拡張です。理論的背景と実装例は以下のスライドと論文に示されています。 正規表現における非包含オペレータの提案 Absent Operator for Regular Expression 従来の正規表現では、「特定の文字以外の 1 文字にマッチする正規表現」は文字クラスの否定を使って [^x] のように書くことができますが、それに対して「特定の文字列を含まない文字列にマッチする正規表現」は簡単に書くことはできません

    鬼雲に非包含オペレータを実装した話 - Qiita
  • regex101: build, test, and debug regex

    An explanation of your regex will be automatically generated as you type.

    regex101: build, test, and debug regex
  • 正規表現技術入門を読んだ | κeenのHappy Hacκing Blog

    κeenです。正規表現技術入門という書評が望まれているようなので今日買ってきて読みました。 私のバックグラウンドと目的 バックグラウンドは RubyとUnixの正規表現はそこそこ使ってる ドラゴンブックは読んだことある RE2の概略も知ってる VMベースの言語処理系のコミッタなのでVMへの理解もある Standard MLの正規表現エンジンを開発中。機能はほぼ揃ってる な感じです。で、実装中の正規表現エンジンがこので紹介されてるVM型でもDFA型でもなくVM型の素朴な形、ASTのインタプリタで 実装されてるので インタプリタのまま追加出来る機能はないか 高速化を目指すならVM化とDFA化どちらがいいか (既存のSMLの正規表現エンジンではVMバックエンドやDFAバックエンドでグルーピングが使えないので)高速な手法でのグルーピングの実装方法が知りたい 後方参照の実装方法が知りたい など

    正規表現技術入門を読んだ | κeenのHappy Hacκing Blog
  • Onigmoを最大49%高速化した話 | κeenのHappy Hacκing Blog

    κeenです。Rubyでも使われてる高速な正規表現エンジン、Onigmo(鬼雲)を高速化したのでその話を。 先日、正規表現技術入門を読んだというエントリの中で ところでに載ってた鬼雲のコードはDT(編注: Direct Threaded)にしてなかったけど簡単のためなのかな?あるいは厳格にC89に準拠するため?picrinみたくプリプロセッサで分岐すれば使えるのに。 と書いたところ、鬼雲の作者、K.Takataさんから @k_takata 「picrinみたくプリプロセッサで分岐すれば使えるのに。」これも知らなかった。 — K.Takata (@k_takata) 2015, 5月 11 という反応を頂きました。そしてイシューにも乗ったので言い出しっぺとして実装してみました。こちらのプルリクです。 Direct Threaded VM自体の解説はRubyist Magazineに載ってい

    Onigmoを最大49%高速化した話 | κeenのHappy Hacκing Blog
  • 「正規表現技術入門」はいい本だ - 西尾泰和のはてなダイアリー

    著者の新屋さんから技術評論社の「正規表現技術入門」を頂きました。 これはいいですね。特に第2章で語られている、正規表現がどうやって生まれてきたかという話がよいです。僕も拙著「コーディングを支える技術」の続編に向けて、正規表現の歴史を書こうとしたことがあったのですが、僕が書こうと思っていたもの以上によいものに仕上がっています。しかも20ページとコンパクトにまとまってて、もう、僕がこれに関して書く必要はないなぁ、とうれしいようなさみしいような。パイプとgrepの関係は知らなかった、面白い。 第1章で60ページぐらいで正規表現の基的なことをおさえてくれているのもよいところです。正規表現を使う必要のあるプログラマはみんな第1章だけでも目を通しておくとよいのではないかな。 正規表現がフォーマルにはどう定義されているものなのか。この話題は、コンピュータサイエンスを大学で学んだ人にとっては常識の範疇

    「正規表現技術入門」はいい本だ - 西尾泰和のはてなダイアリー
  • BNF、EBNF、ABNF、まー正規表現だな - 檜山正幸のキマイラ飼育記

    BNFとか正規表現の話を。 ミニマムなBNFと正規表現 BNF(バッカス/ナウア記法)は、プログラミング言語の構文記述によく使われるメタ構文です。もともとは、「?」(省略可能)や「*」(任意回の繰り返し)のような記号は使わなかったようです。現在の正規表現で標準的に使われる「?」「*」「+」は、なくても次のように定義可能なのです。(以下で、EMPTYはそこに何もないことです。ほんとに何も無いと分かりにくいので目印にEMPTYを使います。) // X は A? X ::= EMPTY | A // Y は A* Y ::= EMPTY | A Y // Z は A+ Z ::= A | A Z 「|」があれば「?」「*」「+」を定義できますが、その代わりに再帰的な定義になります。 「::=」の左に同じ記号が複数回登場するのを許すと、「|」さえも不要になります。 // X は A? X ::=

    BNF、EBNF、ABNF、まー正規表現だな - 檜山正幸のキマイラ飼育記
  • Rubular: a Ruby regular expression editor and tester

    Rubular is a Ruby-based regular expression editor. It's a handy way to test regular expressions as you write them. To start, enter a regular expression and a test string. Or you can try an example.

    Rubular: a Ruby regular expression editor and tester
  • Regex Crossword

    A crossword puzzle game using regular expressions. Earn achievements completing puzzle challenges. Easy tutorials for people new to regular expressions.

    Regex Crossword
  • Regexper

    Regular expression visualizer using railroad diagrams

  • pythonの正規表現で日本語を扱う – taichino.com

    先日、正規表現が使えるようになってきたと書いたものの、今まで日語に対して正規表現を使うのは、どうせ上手く動かないだろうという様な先入観で使っていなかったのですが、調べてみるとただのわず嫌いだった事が解りました。 利用シーンは色々考えられると思うのですが、例えば日語文書中の単位付き数詞(100g、20個等)から数値と単位を両方抜き出すという処理を考えます。折角なので数値・単位共に半角全角文字がどちらも使われていて、正規表現が使いにくそうな状況を想定します。結論から言うとunicode文字列を使えばこのような状況でも上手く正規表現を使う事が出来ます。 使い方は簡単でパターンと検索対象の文字列をunicodeで用意し、searchやmatch等を呼ぶ際にunicodeフラグを指定すればOKです。unicodeフラグは省略形のre.Uも用意されています。先ほど想定した問題に対する正規表現を書

  • JavaScript で任意の漢字にマッチする正規表現を書く - kazuhoのメモ置き場

    重箱の隅で恐縮ですが。弾さんは (function(e){ e.innerHTML = e.innerHTML.replace( /東京都?([\u3200-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]+)/g, '首都$1東京' ) })(document.body)漢字を判定する正規表現が工夫のしどころでしょうか。[一-龠]はUnicode時代にはちょっと古い。grep CJK /usr/local/lib/perl5/5.10.0/unicore/Blocks.txtが参考資料代わりです。CJK Unified Ideographだけ欲しければ[\u4E00-\u9FFF]でも行けます。 404 Blog Not Found:javascript+regexp - ていうか首都最強東京bookmarklet とおっしゃってるけど、[\u4E00-\u9FFF]

    JavaScript で任意の漢字にマッチする正規表現を書く - kazuhoのメモ置き場
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • 1