タグ

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

  • Emacs Lisp

    正規表現は難しい。 でも、Emacs Lisp の正規表現はもっと難しい。 ここでは Emacs Lisp で正規表現を書くプログラマを混乱させる落とし穴についてまとめる。 バックスラッシュ Perl では、バックスラッシュに合致する正規表現を次のように書く。 '\\' しかし、Emacs Lisp では以下のように書かなければならない。 "\\\\" Emacs Lisp の正規表現が嫌いになる理由はこれだけで十分だ。 しかし、なぜこんなにもバックスラッシュが必要なのだろう? それは、Perl が「リテラル」として正規表現を記述するのに対し、 Emacs Lisp では「文字列」として表記するからである。 Emacs Lisp の関数呼び出しでは、 各引数が「評価」されてから関数に利用される。 もちろん、引数として与えられた文字列も利用前に評価される。 (message "a\tb")

  • Javascriptの正規表現置換で後方参照を使いたい - 名もないテクノ手

    Javascriptの正規表現置換(replaceメソッド)で後方参照(RegExp.$1とか)を使いたいと思った時、 str = "aaaaaa123aaaaa456aaaa7890" str1 = str.replace(/(\d+)/g, " (" + RegExp.$1 + ") "); //=> aaaaaa () aaaaa () aaaa () なんて書いてもうまくいきません。なぜなら、RegExp.$1は前回の検索時に最後にマッチした後方参照ですから。実際に試してみるとわかります。 str = "aaaaaa123aaaaa456aaaa7890" str1 = str.replace(/(\d+)/g, " (" + RegExp.$1 + ") "); str2 = str.replace(/(\d+)/g, " (" + RegExp.$1 + ") "); //=>

  • 1