[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:08237] Re: 正規表現置換



こんばんわ。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とかといった
言語ごとに、微妙に異る部分らしいです。

参考までに。

Index Home