[xyzzy:08237] Re: 正規表現置換
- Subject: [xyzzy:08237] Re: 正規表現置換
- From: chiyu <ma11092c@xxxxxxxxxxxxxxxxx>
こんばんわ。chiyu@ふくおか、といいます。
Nobuyoshi Nakada <nobu.nokada@xxxxxxxxxxxx> writes:
> (replace-regexp "\\$array\\[\"\\(\\sw+\\)\"\\]" "$obj->\\1")
M-x replace-regexp
や
M-x query-raplace-regexp
を使って、ミニバッファ上でインタラクティブに変換させる時は、
次のようにすればうまく変換できました。
Query replace regexp: $array\["\(\sw+\)"\]
with: $array\["\(\sw+\)"\]
バックスラッシュでエスケープする時、
LISPファイルに書き込む場合と、
ミニバッファ内に打ち込む場合とでは、
エスケープの仕方が異ります。
LISPファイルに書く場合は、バックスラッシュ自身も
エスケープしないといけないのです。
理由は忘れましたが、正規表現のエスケープと
LISPのエスケープとが衝突するからだったと思います。
そして、正規表現ではこうした
\(と\)でくくったものを、順に
\1 \2 ... で参照できる、という約束が
ありますが、
エスケープをした括弧を使うのか、
それともエスケープをしない括弧で参照させるのか、
といった違いが各ソフトにあるのだそうです。
その辺は、PerlとかAwkとかLISPとかといった
言語ごとに、微妙に異る部分らしいです。
参考までに。