タグ

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

  • Scala の Extractor について調べる。 - 言語ゲーム

    私はパターンマッチ大好きです。PEG も好きだし、Haskell や Erlang のパターンマッチも好きだし、オブジェクト指向言語のメソッドディスパッチもパターンマッチみたいな物です。しかし最近自家製 lisp しか触っていなくて、何をするにも car と cdr で大変フラストレーションが溜まっています。そこでちょっと変わった所で Scala のパターンマッチについて調べてみました。 Scala の使い方 いつの間にか私の macports に scala が入っていたのでそれを使います。コマンドラインで scala と入力するとそのまま実行出来るみたいです。 $ scala scala> 3 + 4 res0: Int = 7同じ jvm 言語でも clojure と比べてかなりマッタリしてますが、repl が使えるだけ有り難いです。 プログラムを保存するには .scala という拡

    Scala の Extractor について調べる。 - 言語ゲーム
  • Erlangの正規表現について調べる(2) | へびにっき

    先日コメント欄で教えていただいたErlangの新しい正規表現モジュール re。使える正規表現の種類やマッチの特性・性能は PCRE に準ずるので、現代的な諸プログラミング言語と比較しても遜色ないレベルの機能を備えている。正規表現なしの文字列処理なんて考えられない!という人もこれで安心。 さらに、古い regexp モジュールと比較して、マッチ対象や正規表現自体を iodata() で構成することができるという点は注目に値する。 erl> re:run([>, $m, "i ", [>, "ka"]], ["^", "A.+a", "$"]). {match,[{0,12}]} マッチや置換の結果を取得する方法も柔軟に選択できるので、「一連のバイナリから特定のパターンを抜き出してリスト(文字列)として取得する」なんてことも簡単にできる。例えば『プログラミングErlang』193ページの sc

    kgbu
    kgbu 2010/02/07
    Erlangの正規表現モジュールreの話。PCRE準拠
  • d.y.d.

    20:52 09/07/30 こんすとぽ 確か cppll でかなり昔に見た記憶があるんですが、C++ のこれ int I = 42; const int CI = I; // OK! int* pI = &I; const int* pCI = pI; // OK! int** ppI = &pI; const int** ppCI = ppI; // コンパイルエラー! int** から const int** への変換はできません! は何故こういう仕様になっているのでしょうか?というのは面白いクイズだなーと。 「2番目が安全なのと同じで、3番目も型的には安全では?」と一瞬思ってしまうのですが、 そんなことはなく、このキャストを許すと const なはずのものを書き換えられてしまいます。 具体的にどうやるかは読者の皆様への宿題です(←偉そう)。 知った当時はよく仕様考えてあるなーすげー

  • Irregexp, Google Chrome's New Regexp Implementation

    $200K 1 10th birthday 4 abusive ads 1 abusive notifications 2 accessibility 3 ad blockers 1 ad blocking 2 advanced capabilities 1 android 2 anti abuse 1 anti-deception 1 background periodic sync 1 badging 1 benchmarks 1 beta 83 better ads standards 1 billing 1 birthday 4 blink 2 browser 2 browser interoperability 1 bundles 1 capabilities 6 capable web 1 cds 1 cds18 2 cds2018 1 chrome 35 chrome 81

    Irregexp, Google Chrome's New Regexp Implementation
    kgbu
    kgbu 2009/02/07
    Chromeの正規表現エンジンがPerl互換のWebkitのJSCREから変わるとか。いったんオートマトンに変換し、その形式で最適化して最終的なルーチンを組み立てるらしい。
  • 「正規表現」に無限のパワーを与える"田中哲スペシャル" - Atzy->getLog()

    先日、「正規表現」の話を書きました(d:id:atzy:20080905)が、(自称)正規表現専門家の私が、ほとんど使われていないけれど、すさまじいパワーを持つ機能を紹介しましょう。 それが「田中哲スペシャル」です。私はこれを使い始めてから肩こりは治るわ、イボ痔はよくなるわ、女の子にモテモテになるわと、人生が変わりました。 田中哲スペシャルとは このような一風変わった名前がついているのは、田中哲(たなかあきら)さんが最初のアイデアを生み出したためです。 2002年4月3日に「鬼車」と呼ばれる正規表現ライブラリ関連で提案され,そして使えるようになりました。鬼車はRuby 1.9やらPHP5やらで利用することができます。 (ruby-dev:16732) sharing sub-regexp 簡単にいいますと「同じ表現を何度も書くのがウザイ」というものです。例えば「ホスト名(FQDN)にマッチ

    「正規表現」に無限のパワーを与える"田中哲スペシャル" - Atzy->getLog()
    kgbu
    kgbu 2009/01/29
    素朴な疑問だけど、ネストまでしたらそれって正規表現なの?でも、面白いことは良いことだと思います。
  • JSSST : Vol. 23 (2006) , No. 3 pp.3_14-3_34

  • unicode の大文字小文字は大変だなあ - まめめも

    ちょっと調べただけですが、面白かったのでメモ。世界は広いですね。バベルの塔ですね。 ß ドイツ語では、ß (U+00DF 、エスツェット) を大文字にすると SS になるらしい。 鬼車 (RubyPHP で使われている正規表現エンジン) はこれに対応していて、ignore case にすると、一文字が複数の文字にマッチして驚く。 # coding: UTF-8 p "-SS-"[/-\u00DF-/i] #=> "-SS-" p "-\u00DF-"[/-SS-/i] #=> "-\u00DF-" こういう関係の字は他にもあるみたい。 ref: ftp://ftp.unicode.org/Public/UNIDATA/SpecialCasing.txt İ と ı トルコ語やアゼルバイジャン語では i と I が別の字らしい。i の大文字は İ (U+0130 、点つきの I) で、

    unicode の大文字小文字は大変だなあ - まめめも
    kgbu
    kgbu 2008/12/06
    小文字では1文字、大文字では2文字とか、Iとiは別の字だとか、アルファベットは奥が深いんだな。
  • L'eclat des jours(2008-11-26) ?:

    _ ?: と、タイトルを書いて今気づいたが、?:って「三項演算子」だな。というか別に間違ってはいないか。+は二項演算子だし。単項もあるでよ。なぜ、三項演算子という呼び方を目の敵にする人がいるのだろうか? そういえば、三項演算子の利用を目の敵にする人もいて、マーティン?ファウラーがネタにしていたくらいだ。(ネタといわず、例としてでも良いけど) いずれにしても、三項演算子は報われない生涯を歩んでいるようだ。 で、正規表現の?:だが、これは何が嬉しいのだろうか? と、先日購入したハンドブックを読んでいて、初めて知った(一通りの書き方は目を通していたはずだから初めて知ったはないとは思うので)あるいは意識したのだが、さっぱりわからない。 ?:のご利益は後方参照用の保存をしないことだということはわかったのだが。 たとえば、/(?:abc)(def)/ =~ "abcdef" として、$1でabcの代わ

    kgbu
    kgbu 2008/11/27
    ?:って、正規表現の中に正規表現を埋めるときに、部品となる正規表現で使うと、括弧の対応が崩れなくて便利なのかー。
  • 正規表現利用間に合わせパーサ | tnomuraのブログ

    正規表現を利用した、ちょこっとまにあわせパーサができた。 使い方だが、まず、スキャナーの字句解析ルールを設定した配列を引数にして、Lex クラスのオブジェクトを作る。lex.buf = "(1 + 2) + 3" のように、Lex オブジェクトのバッファに、解析したい文字列を入れると、lex.get を実行するたびに、戻り値としてトークンと値が帰ってくる。 字句解析ルールは[ 正規表現によるパターン, トークン名(英字一文字), 値を戻すときの処理]という配列の配列だ。値を戻すときの処理は、たとえば数値データなどで文字列を数値にするときなどに使う。トークン名を英字一文字にしたことによってパーサのデータの処理が正規表現を使ってできる。 次にパーサのルールを設定するが、パーサのルールは、[トークンのパターン, パターンが一致して縮約するときのトークン, パターンが一致したときの値の処理] とい

    正規表現利用間に合わせパーサ | tnomuraのブログ
  • PragDave: Fun with Ruby 1.9 Regular Expressions

    I've reorganized the regular expression content in the new Programming Ruby, and added some cool new advanced examples. This one's fairly straightforward, but I love the fact that I can now start refactoring my more complex patterns, removing duplication. The stuff below is an extract from the unedited update. It'll appear in the next beta. It follows a discussion of named groups, \k and related

  • 大人げ - sumiiのブログ

    http://d.hatena.ne.jp/soutaro/20070516/1179323606 に脊髄反射。 open Lazy type tree = S of string | Or of tree lazy_t * tree lazy_t let rec map f = function | S s -> S (f s) | Or(l, r) -> Or(lazy (map f (force l)), lazy (map f (force r))) let rec prod = function | S s, t -> map (fun s' -> s ^ s') t | Or(l, r), t -> Or(lazy (prod (force l, t)), lazy (prod (force r, t))) let rec rep t = Or(lazy (S ""), laz

    大人げ - sumiiのブログ
    kgbu
    kgbu 2008/08/21
    正規表現に一致するパターンを、ある順序にしたがって数え上げる例
  • d.y.d. 正規表現にマッチする例をランダム生成

    15:43 07/05/17 正規表現にマッチする例 soutaroさんの 正規表現にマッチする例をランダム生成 する話を見てたら、 自分でも書きたくなってきました。というわけでソース。 正規表現を構文解析してオートマトンに コンパイルしてから、その上を似非ランダムウォークしてます。対応してる正規表現は ?と+と*と|と.と[…]だけです。[…]の中の-とか^とかにも反応しません。あと IE と Rhino でしかチェックしてないので他の環境で動かなかったらゴメンナサイ。 きっともっとマトモなのをsoutaroさんが公開されるはずです。 ボタンを押したらこの上↑に10個例が生成されるはず。 で、動かしてみて思ったのは、当たり前だけど繰り返しが長続きしないなー、と。 確かに、ループをちゃんと意識しないと面白い結果にならないかもしれないですね。 なるほど。 追記12:15 07/05/18 ぎ

  • 正規表現からその正規表現にマッチするような例を生成する - soutaroブログ

    当にやりたいことは、 型から、その型を持つようなRubyプログラムを生成するなんだけど(というかこれはHaskell界隈の人が喜んでやってるやつだよな、つまんね)、とりあえず正規表現で考えてみてた。 正規表現は有限状態オートマトンになるわけで、ループがあるとやだなぁ、とか考えてたんだけど、研究室の後輩(オートマトン屋さん)に相談してみたら、少なくとも正規表現に限定してしまえば簡単になると言われた。確かに、よく考えてみれば、ループがある場合は*とかで明示されてる。そういうわけで30分くらいで作ったプログラム。 実行例: $ ruby regen.rb /red|blue|green|(#[01234567890ABCDEF][01234567890ABCDEF][01234567890ABCDEF][01234567890ABCDEF][01234567890ABCDEF][0123456

    正規表現からその正規表現にマッチするような例を生成する - soutaroブログ
  • MONAを使おう

  • Erlang -- re

    Expand All Contract All Table of Contents STDLIB (App) argparse Top of manual page format_error/1 help/1 help/2 parse/2 parse/3 run/3 array Top of manual page default/1 fix/1 foldl/3 foldr/3 from_list/1 from_list/2 from_orddict/1 from_orddict/2 get/2 is_array/1 is_fix/1 map/2 new/0 new/1 new/2 relax/1 reset/2 resize/1 resize/2 set/3 size/1 sparse_foldl/3 sparse_foldr/3 sparse_map/2 sparse_size/1 s

  • http://www.kt.rim.or.jp/~kbk/zakkicho/08/zakkicho0806b.html

  • Scalaオフ会&勉強会@豆蔵に行ってきた - NyaRuRuが地球にいたころ

    一昨日の話だけど. id:HHa:20080614:1213399170 id:good_way:20080614:1213451132 id:ryugate:20080615:p1 Scala勉強会(mixi ScalaコミュOFF会)で話してきました。 感想とか 改めて言語組み込みパターンマッチが強力な言語は良いなぁ,とかおもた.特に型システムとの連携. あと,正規表現なんかもまさに広義のパターンマッチの一種だけど,そういった「パターンマッチ的なもの」の整理・統合は今後の全部入り言語の標準機能としてじわじわ来そうな気がする.じわじわ. String と同じメソッド群を持ち同じように振る舞うならそれは String である…っていうと Duck Typing になっちゃうか、えーとえーと、「Regexp が要求するあれとこれとそのメソッドを持ってれば全て正規表現検索対象にできます」ってい

    Scalaオフ会&勉強会@豆蔵に行ってきた - NyaRuRuが地球にいたころ
  • inforno :: OreScriptがはやってるならパーサコンビネータの需要もあるのかな?

    近頃、 JavascriptでOreScript なんてのがちょっとはやっていたりしまして。 OreScript書くのにある程度ちゃんと動くパーサコンビネータがあれば便利かも、とおもったので以前書いたパーサコンビネータをいじってみました。 変更点 メソッド名などをHaskellにあわせた よくもわるくも、記号含有率をあげた(and -> $に、or -> l に) 相互再帰をサポートした 左再帰(chainl1)をサポートした 右再帰(chanr1)をサポートした ということで、そこそこの用途に耐えるものになったと思います。 ダウンロード 完全にアンドキュメントです。すみません。ただ、ソースは200行くらいなんで見ればわかるかと。というか、HaskellのParsecのマニュアルを読めば基一緒なので使い方がわかると思います。 ダウンロード サンプル id:amachangさんが書いていた

  • Cleanで関数プログラミング 【第2部第5章】

    目次へ    最終更新 : 2002/11/10 第5章 パーサコンビネータ 5.1 パーサの型 5.2 初歩的なパーサ 5.3 文法 5.4 パーサコンビネータ 5.5 パーサ変換子 5.6 括弧の照合 5.7 より多くのパーサコンビネータ 5.8 オプションの解析 5.9 算術式 5.10 一般化式 5.11 モナドパーサ 5.12 文脈依存性 5.13 よくある罠 5.14 エラー処理 5.15 自己適用 5.16 演習 章は、パーサコンビネータ(parser combinator)を使用して遅延関数型言語のパーサ(構文解析子)を記述する公式的ではない紹介である。コンビネータ(結合子、組合せ子)は、解析関数(parse function)を操作する演算子である。これらのコンビネータを使用すると、エレガントな方法で、曖昧な文法(ambiguous gr

  • 2004-07-30

    実は昨日の話題はこれから書こうとする話とつながりがあるのだ。 (直接的には無いけど) (序) 突然であるが、Haskellは文字列処理が強力だと思う。 それも最強レベルに。 他のいわゆる文字列処理が得意であるとされる言語のように 正規表現による置換が可能であるとか、文字列がオブジェクトで 有用なメソッドがたくさん使えるとかそういった 小手先のものではなくてもっと根的なレベルで強力なのである。 それはHaskellに於いて文字列が文字のリストであらわされていることに 起因する。わからない人から見ると文字列がリストであるということは Cにおいて文字列が配列で表されているのとかぶるかもしれない。 Haskellが文字列をリストとして持っていてうれしいというのは Haskellが全言語中でもほとんど最強のリスト操作能力を持っているからである。 Cで文字列が配列になっていても何もうれしくないのは、

    2004-07-30