メタキャラクタにエスケープが必要なのは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
 
 助かります。お願いします。

[ ]