[ 新規に投稿する ]

メタキャラクタにエスケープが必要なのは正規表現の場合だけ?No.09626
でがらし さん 21/10/01 21:21 [ コメントを投稿する ]
   先の質問の続きで少し考えていたのですが、メタキャラクタにエスケープが必要なのはその文字を正規表現として利用する場合だけでしょうか?
 換言すると、メタキャラクタとなる文字であっても、正規表現で利用しない場合は、エスケープは不要でしょうか?
[ ]
RE:09626 メタキャラクタにエスケープが必要なのは正No.09627
でるもんたいいじま さん 21/10/02 07:47 [ コメントを投稿する ]
  秀丸愛用者の「でるもんた・いいじま」です。

> 先の質問の続きで少し考えていたのですが、
> メタキャラクタにエスケープが必要なのは
> その文字を正規表現として利用する場合だけでしょうか?

その通りです。
正規表現を使わない場合、( ) などを単に書いてそれがメタキャラクタとして機能しては逆に困りますよね。なのでエスケープなしでそのまま書けるようになっています。

#マクロで "...\\...\"..." のように書くのはまた別の話です。

結局のところ、今回の場合は

// hidesoft.4:09620 より。regular指定なしで。
replaceallfast "(a)", "(1)";
replaceallfast "(b)", "(2)";

// regular指定をつけたままにするならこう。
replaceallfast "\\(a\\)", "(1)", regular;
replaceallfast "\\(b\\)", "(2)", regular;

の2とおりが正解になります。
[ ]
RE:09627 メタキャラクタにエスケープが必要なのは正No.09628
でがらし さん 21/10/02 09:48 [ コメントを投稿する ]
   でるもんた・いいじまさん、おはようございます。

 明解なご説明で、ようやく正規表現と一般表現の違いの一端を理解しました。正規表現の利用に頭をかかえこむことが多かったので、とても助かります。

 でるもんた・いいじまさんともども、ご回答いただいた皆様方、ありがとうございました。
[ ]
RE:09628 メタキャラクタにエスケープが必要なのは正No.09634
秀丸担当 さん 21/10/04 09:01 [ コメントを投稿する ]
 
置換文字列の場合は、メタキャラクタとなるのは「\」のみで、正規表現のページのヘルプは説明不足でした。すみません。
置換文字列は、\t、\nといったタブや改行などの書き方、\1・\2、\g{数字}といった書き方のタグ、\(数字…)が有効で、いずれも「\」が始まりです。
「\」そのものは「\\」とする必要があり、「\」以外はそのままでいいということになります。
ヘルプには、検索文字列と置換文字列を分けて明確に書いておこうと思います。
[ ]
RE:09634 メタキャラクタにエスケープが必要なのは正No.09635
でがらし さん 21/10/04 10:01 [ コメントを投稿する ]
   助かります。お願いします。
[ ]

[ 新規に投稿する ]