タグ

onigumoに関するa2ikmのブックマーク (3)

  • Rubyの正規表現で対応する括弧を考慮していい具合にマッチさせる - There's an echo in my head

    1.9以降に搭載された正規表現エンジン(oniguruma, onigumo)では (?<name>式)によってマッチした式部分に名前(ここではname)を付けることができ、 それにマッチした内容を後方参照\k<name>で参照でき、 また\g<name>でその式を再帰的に呼び出すことができる これを使えば、括弧のペアを対応させた上でマッチさせることができる。 たとえば次の例ではLispのシングルクォーテーション記法をquote関数の呼び出しに変換する。 regexp = /'(?<paren>\((?:[^()]|\g<paren>)*\))/ replace = '(quote \k<paren>)' # 1段 "'(+ 1 2)".match(regexp) #=> #<MatchData "'(+ 1 2)" paren:"(+ 1 2)"> "'(+ 1 2)".gsub(reg

    Rubyの正規表現で対応する括弧を考慮していい具合にマッチさせる - There's an echo in my head
  • Ruby 2.4.1新機能: Onigmo正規表現の非包含演算子(?~ )をチェック|TechRacho by BPS株式会社

    2017.03.23 Ruby 2.4.1新機能: Onigmo正規表現の非包含演算子(?~ )をチェック こんにちは、hachi8833です。Ruby 2.4.1リリースおめでとうございます。 多くの修正・変更点の中から、私にとって関心の高い非包含演算子を取り急ぎチェックしてみました。結構奥が深そうなので、何かわかったら別途記事にするかもしれません。 「特定の文字列を含まない文字列にマッチする」なんて夢のようじゃありませんか。 参考情報 公式ニュース: Ruby 2.4.1 Released 2.4.0以降のコミット: Comparing changes 公式のコミットはmergeばかり並んでいて読みづらいので、RubyFlowの速報も参照しました。 Ruby 2.4.1 Onigmoアップデートで非包含演算子が導入 Rubyの正規表現エンジンとしておなじみのOnigmoRubyとは独

    Ruby 2.4.1新機能: Onigmo正規表現の非包含演算子(?~ )をチェック|TechRacho by BPS株式会社
  • 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
  • 1