[ 新規に投稿する ]

半角カッコ内の半角英字を半角数字に変換するマクロ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 [ コメントを投稿する ]
   レス、ありがとうございます。
 この説明は知っていたんですが、文字列の中に半角カッコなどがあるときは一律にエスケープする必要があるものだと思っていました。メタキャラクタそのものを検索しない場合には、エスケープする必要がないということなんでしょうね。追って確認してみます。
 
[ ]

[ 新規に投稿する ]