ワイルドカード的置換No.36569
matushiro97 さん 18/05/24 10:39
 
text(ab),text(cd)等の文字に対してtext(*)の()を除いてtextab,textcdのように置
換する方法はありますか?

いまはやり方がわからないのでtext(を順に検索して手作業で()を除いています.
最初にtext(をtextに置換する方法は,置換後に閉じかっこを探す方法がなくなるの
で(()のような場所がいっぱいあるので,これら区別できないため),実行してい
ません.

よろしくお願いします.

[ ]
RE:36569 ワイルドカード的置換No.36570
さん 18/05/24 10:49
 
 こんにちは。

 「置換」ダイアログを開いて、検索文字に

text\((.*)\)

、置換文字に

text\1

を入力して、「正規表現」のチェックボックスにチェックをつけて、置換を実行する
と、お望みの文字列になると思いますが、これでいかがでしょうか。

 以上、参考になれば幸いです。

[ ]
RE:36570 ワイルドカード的置換No.36571
秀丸担当 さん 18/05/24 11:59
 

参考情報として、正規表現を使った置換をする場合、.*の部分は行内の一番長いもの
にマッチします。
一行に複数あるか、括弧の対応がどうなのかわからないのでどちらが適切かわらない
ですが、.*の部分は.*?とするといい場合があります。.*?とすると短いほうにマッチ
します。
検索文字列:text\((.*?)\)
置換文字列:\1


または、キー操作の記録と再生を使うと簡単にできる場合があります。
例えば以下のようにします。
1.[マクロ]→[キー操作の記録開始/終了](標準でShift+F1)
 タイトルバーが「記録中!」となります。
2.検索ダイアログで正規表現はOFFにして、「text(」を検索。
3.左右矢印キーやCtrl+左右矢印キーでカーソル位置を「(」に先頭にもってくる。
4.「対応する括弧に移動」コマンド(標準でCtrl+K)で括弧の末尾に移動し、Dele
teで削除。
5.上候補(標準でShift+F3)で直前の「text(」を再び検索。
6.また「(」まで移動し、Deleteで削除。
7.[マクロ]→[キー操作の記録開始/終了](標準でShift+F1)
 タイトルバーの「記録中!」が消えます。

記録しておいた操作を、[マクロ]→[キー操作の再生](標準でShift+F2)で一度に実
行できるようになるので、これを繰り返すと簡単にできます。


--------

ちなみに本題とは少しずれますが、検索を伴うキー操作の記録は、[その他]→[動作
環境]→[検索]の「検索での表示」が「点滅表示」か「範囲選択」かによって、やり
やすさが違い、「範囲選択」になっていると操作しやすいことが多いです。
現状で、キー操作の記録で記録されるマクロは動作環境の影響を受けてしまうのです
が、影響を受けないように、今後のバージョンでsetcompatiblemodeで0x00000100(点
滅表示)か0x00000200(範囲選択)を自動的に記録するようにしようと思います。

[ ]
RE:36571 ワイルドカード的置換No.36582
matushiro97 さん 18/05/26 22:04
 
皆様

ありがとうございました。

[ ]