置換時の括弧の補完についてNo.37358
むむし さん 19/05/30 13:43
 
秀丸エディタで括弧の後ろも補完してくれる置換かマクロを探しています。
NCプログラム用に使っています。
たとえば、
#123=0.01を[N456=0.01]
に置換するとき、#123=を[N456=に置換し、0.01の左端まで移動して]を入力していま
す。
0.01の部分は様々な値が入ります。
一気に置換することはできますか。
また置換する行中に、
[N456=0.01](***********)のようにコメントが入っていることもあります。

[ ]
RE:37358 置換時の括弧の補完についてNo.37359
秀丸担当 さん 19/05/30 18:25
 

どういうルールかによりますが、正規表現を使った置換でできると思います。

「#123=」と「[N456=」が固定の文字列だとして、例えば、置換ダイアログで、以下
のようにします。
検索文字列:#123=([0-9.]+)
置換文字列:\[N456=\1\]
正規表現をONにして全置換するとできます。

検索文字列の()でくくられた部分が、置換文字列の\1になります。
正規表現の詳細についてはヘルプを参照してほしいです。

[ ]
RE:37359 置換時の括弧の補完についてNo.37360
むむし さん 19/05/31 10:31
 
ご返答ありがとうございます。
また、思っていた操作ができました。
意図を的確に読み取ってくださりありがとうございます。
正規表現のヘルプについて、メタキャラクタによるコマンドが実行されることだとわ
かりましたが、メタキャラクタの一覧を見てもわかりませんでした.…
複雑なことはしませんので、また操作について教えていただけますと幸いです。

@先のたとえにおいて、[N456=\1]でも通用したのですが、違いはありますでしょうか?

Aまた新たなたとえを出します。
G43Z999.S[A51]を
G43Z999.S[A888]に置換したいと思います。
G43,S,Aは固定です。
Zは999に様々な値が入ります。(先と同じで([0-9.]+と\1が入りますでしょうか。)
大かっこの中の、また別の様々な値を決まった888という値にしたいです。

お手数をおかけしますが、最後になりますので以上の2点についてどうかよろしくお
願いいたします。

[ ]
RE:37360 置換時の括弧の補完についてNo.37361
秀丸担当 さん 19/05/31 11:44
 

>@先のたとえにおいて、[N456=\1]でも通用したのですが、違いはありますでしょう
>か?

すみません。置換文字列は「[N456=\1]」でもよかったです。
検索文字列では「[」や「]」の文字は意味を持つので、それを打ち消すために「\[」
や「\]」と書きます。
置換文字列についてはそれは必要ありませんでした。

>Aまた新たなたとえを出します。
>G43Z999.S[A51]を
>G43Z999.S[A888]に置換したいと思います。
>G43,S,Aは固定です。
>Zは999に様々な値が入ります。(先と同じで([0-9.]+と\1が入りますでしょうか。)
>大かっこの中の、また別の様々な値を決まった888という値にしたいです。

「Z」が何でもいい任意の一文字であれば「.」
「999」が数字3桁固定であれば、「[0-9][0-9][0-9]」
「999」が何桁でもある場合は、「[0-9]+」、ドットも含むのであれば「[0-9.]+」
「.」が「.」の文字そのものであれば「\.」
「[」が「[」の文字そのものであれば「\[」
「]」が「]」の文字そのものであれば「\]」
という感じになります。

置換ダイアログではなく、まずは検索ダイアログで、正規表現をONにして、ダイアロ
グ右側の「検索文字列を強調」もONにして、どういうパターンで何がヒットするかを
見てからやるとわかりやすいと思います。

Z999のように変化する内容を置換文字列でも使う場合は、検索文字列の該当部分を()
でくくって、置換文字列では\1にします。

例えば、検索文字列を
G43.[0-9][0-9][0-9]\.S\[A[0-9][0-9]\]
というようにまず検索してみて強調されることを確認してから、
G43(.[0-9][0-9][0-9])\.S\[A[0-9][0-9]\]
というように再利用する部分を括弧でくくって、置換文字列は
G43\1.S[A888]
というようにします。

[ ]
RE:37361 置換時の括弧の補完についてNo.37362
むむし さん 19/05/31 15:34
 
ご返信ありがとうございます。
とてもわかりやすく、すんなり操作したかったようにすることができました。
また、正規表現オンでは「V[」などが検索できなかったため、\の意味も知ることが
できて助かりました。

このたびは丁寧に教えてくださり、ありがとうございました。

[ ]