タグ

regexに関するamachangのブックマーク (2)

  • 正規表現ベースの字句解析器を書くときは - 最速チュパカブラ研究会

    正規表現ベースの字句解析器を書くときは、narcissusというJSベースのJS処理系のコードを見るといいです http://mxr.mozilla.org/mozilla/source/js/narcissus/jsparse.js 面倒な正規表現の模範解答が載ってます。下手に自分で考えて誤爆するより、一流の人が書いたものを使いましょう 正規表現リテラル /^\/((?:\\.|[^\/])+)\/([gimy]*)/ 文字列(ダブルクォート、シングルクォート共)/^"(?:\\.|[^"])*"|^'(?:[^']|\\.)*'/ → 訂正 Cスタイルコメント(一行、ブロック共) /^\/(?:\*(?:.|\n)*?\*\/|\/.*)/ ↓narcissusについてはyukobaさんのプレゼンを(去年のShibuya.es) http://accelart.jp/shibuyajs

    amachang
    amachang 2008/04/29
    正規表現で lexer をかくときは narcissus が参考になる。
  • 検索アルゴリズム (5)正規表現 -1-

    検索アルゴリズム (5)正規表現 -1- 前回までは、固定文字列の照合アルゴリズムを紹介しましたが、この章では特定の「パターン」に合致する文字列を検索する処理、いわゆる「正規表現」(regular expression)を取り上げたいと思います。正規表現は、grep,sed,awk,perlなど、様々なツール、言語上でサポートされているので、たいていの方はその恩恵(?)に預かっているでしょう。 1)正規表現の定義 正規表現は、1つ以上の空白でない「枝」(branch)からなり、各「枝」は'|'で区切られます。正規表現は、「枝」の中のいずれかに一致した場合に「一致した」ことになるので、'|'は"論理和"の役割を持つといえます。

    amachang
    amachang 2007/02/21
    正規表現は非決定性有限オートマトン(Non-deterministic Finite state Automaton(NFA))で考える。
  • 1