半角カッコ内の半角英字を半角数字に変換No.09619
でがらし さん 21/10/01 18:04
 
 半角カッコに含まれる半角英字((a), (b)など)を半角数字に変換するために下記
のようなマクロを作りましたが、思ったように動きません。閉じカッコの前の文字列
が削除されます。どう修正すべきかおわかりの方がお見えでしたら、お教え下さい。

replaceallfast "\\(a\\)", "\\(1\\)", regular;
replaceallfast "\\(b\\)", "\\(2\\)", regular;

[ ]
RE:09619 半角カッコ内の半角英字を半角数No.09620
おすぎ さん 21/10/01 18:34
 
おすぎです。

半角カッコに含まれる半角英字((a), (b)など)を半角数字に変換するのでした
ら、正規表現を使わずにマクロを作ったらどうでしょうか?

replaceallfast "(a)", "(1)";
replaceallfast "(b)", "(2)";

[ ]
RE:09619 半角カッコ内の半角英字を半角数No.09621
秀丸担当 さん 21/10/01 18:53
 

置換文字列の場合は、「(」をエスケープする必要は無く、そのまま書くことができ
ます。
置換文字列は"(1)"とするといいと思います。

「\(数字…」という書き方になると、秀丸エディタヘルプの、
「\(tag-number,function) 置換の時の、変換モジュールによる変換の指定 」
のページにあるような、変換モジュール動作になります。
実際は、数字だけだと変換モジュールとしては動作せず、空になって効果が無いだけ
になっていました。

[ ]
RE:09620 半角カッコ内の半角英字を半角数No.09622
でがらし さん 21/10/01 20:19
 
 コメント、ありがとうございます。半角カッコは \\ をつけてエスケープするもん
だとばかり思っていました。そうでないことがあるんですね。勉強になりました。

[ ]
RE:09621 半角カッコ内の半角英字を半角数No.09623
でがらし さん 21/10/01 20:24
 
 置換文字列のエスケープだけを外しても、それとともに元の文字列のエスケープを
外しても、うまくいきました。ありがとうございました。

 半角カッコのエスケープが必要あるときとないときは、どういう区別になっている
のか、どこかに記載があるでしょうか?



[ ]
RE:09623 半角カッコ内の半角英字を半角数No.09624
Iranoan さん 21/10/01 20:53
 
でがらしさんこんにちは、Iranoan です
>  置換文字列のエスケープだけを外しても、それとともに元の文字列のエスケープ
>を外しても、うまくいきました。ありがとうございました。
>
>  半角カッコのエスケープが必要あるときとないときは、どういう区別になってい
>るのか、どこかに記載があるでしょうか?
正規表現を使う時はエスケープする必要があります
そのため正規表現の説明部分、ヘルプを見ていただければ、次の記述が有ります
> なお、メタキャラクタそのものを検索したい場合はエスケープ文字でエスケープし
>てください。
> 例えば、パーレンや疑問符を検索したい場合は次のようにします。
>     パーレンの場合:
>         \(

[ ]
RE:09624 半角カッコ内の半角英字を半角数No.09625
でがらし さん 21/10/01 21:16
 
 レス、ありがとうございます。
 この説明は知っていたんですが、文字列の中に半角カッコなどがあるときは一律に
エスケープする必要があるものだと思っていました。メタキャラクタそのものを検索
しない場合には、エスケープする必要がないということなんでしょうね。追って確認
してみます。
 

[ ]