/ 最近 .rdf 追記 編集 設定 本棚

log[20090317] [ーパーバ] Jan Goyvaerts, Steven LevithanRegular Expression CookbookOreilly & Associates Inc



20090317() XRegExp(シンプルな正規表現しか使えない JavaScriptにモダンな拡張機能を提供する JavaScriptライブラリ)の作者Regular Expressions Cookbookを書いた(共著)って気になるけどクックブックってどんなんなんだろう「読める本ではないような不安があるんだけど

[][正規表現] [ーパーバ] Jan Goyvaerts, Steven LevithanRegular Expression CookbookOreilly & Associates Inc

Regular Expression Cookbook Regular Expression Cookbook
Jan Goyvaerts/Steven Levithan
Oreilly & Associates Inc
4,073

XRegExp: JavaScript regex librarySyntaxHighlighter(Ver.2.0)で使われていたので知ったXRegExpの作者が本の著者の一人Steven Levithan

XRegExp(Ver.0.6.1)Firefox 2,3Internet Explorer 5.5-8β1Safari 3.1Opera 9.27JavaScriptに付け加えて利用可能にする正規表現の機能は

  •  名前付きキャプチャグループ

    後方参照も可String.replace()での使用も可

  •  s(singleline)フラグ

    .が改行にもマッチ

  •  x(extended)フラグ

    ほとんどの空白を無意味なものにしたり(=パターンを自由にインデトできる)行コメ(#から改行まで)を利用可能にする

  •  インラインコメ

    (?#ここにコメ)

  •  Unicode Properties & Blocks サポ

    こんなの\p{L}, \p{M}, \p{N}, \p{InHiragana}, \p{InKatakana}否定は大文字のP\P{}

    文字集合の中で使えないという制限があるが若干の工夫でなんとかなる

使い所が限定されていそうだったり使い方が難しそうな機能として

  •  XRegExp.matchRecursive(string, left, right, modifiers, options)

    (独り) 名前付きキャプチャグループをサポトしたならそのキャプチャ結果をスタックしてそこにパターンを繰り返し適用する書き方を用意することでmatchRecursive()なんてスペシャルメソドは不要にできるのでは? <何を言ってるのか自分でわかってないよ

    XRegExpのコトラクタlog[2008-01-11-p01] 鬼車すごい正規表現で再帰ができるで書いたようなパターン文字列を渡して再帰を認識するマッチングを行いたいです。

正規表現に関連するいくつかのメソドを上書きしブラウザ間の差異を吸収するとともに仕様通りの動作に統一したりもする

  •  /pattern/g.lastIndex

    IEなどが0の文字にマッチしたときに lastIndexを不当にインクリメトするのを修正

  •  String.split(separator, limit)

    • 分割パターン中のキャプチャグループを戻り値の配列に挿入する
    • ッチに参加しなかったキャプチャグループの位置に undefinedを挿入する
    • 連続するセパレータの間などに存在する空文字列を省略せずに戻り値の配列に含める

    (独り) limitを指定したときに戻ってくる配列の要素数が limitと一致しないXRegExpのバグ? もちろん separatorにキャプチャグループは使っていない


 再帰パターン

例えば再帰の深さの上限を 1020と決めてしまってXRegExpのコトラクタでごにょごにょパターン文字列を展開してみればどうだろうJavaScriptで正規表現を一から実装しようというプロジトではないから自ずと制限が定まってしまうのだけど上限付きでもそれが 20もあれば十分という気がする


 追記@2009-06-25: XRegExp 1.0がリリースされている(2009-06-24)

驚いた大部分がライブラリの機能紹介という退屈な(<作者本人が一番よく知っているから)文章に紛れ込んだバグ報告(とも呼べそうにないもの)を不自由な Google翻訳から見つけ出すとは

1.0のソースも眺めてみたいけれど巨大な変更履歴にちっと後込そのうちね

本日のツッコミ(1)
Steven Levithan 20090625() 03:46 JST

Hi. I translated this page using Google Translate.<br><br>The latest version of XRegExp (v1.0) adds many new features and fixes the bug with `String.prototype.split` and the `limit` parameter. You were the first person to report the bug, so thank you!