電子書籍の厳選無料作品が豊富!

秀丸エディタで文書内全置換を行う際、ある文字列を置換対象から除外する方法はあるのでしょうか?
例えば「一浪が一浪して大学に入学した。」という文章を「一浪が二浪して大学に入学した。」と書き換える際、あらかじめ名前の「一浪」部分をマスキングできて、そこは二浪に置換されないといったやり方を探しています。
ハイライト表示を使って、ハイライト表示された文字列は置換対象から除外できるようにするなんていう風にできるとありがたいのですが、どなたか良い方法をご存じではないでしょうか?

A 回答 (5件)

再びNo1です。



> 実は私の場合、「<任意の文字列>」という<>で囲まれた文字列を置換対象から除く必要があります。

そういうことなら、力技で回避可能です…と言うか、そうするしか方法がないと思います。

1)<一浪>を<一:浪>に置換
2)一浪を二浪に置換
3)一:浪を一浪に置換

正規表現も考えたのですが、検索はできても置換はうまくいきそうにないです。検索だけなら、次の式で概ね問題ないはずですが。

[^<]一浪[^>]

これは、<以外の1文字・一浪・>以外の1文字であるという式です。ただこれで置換を行うと、一浪の前後の1文字まで置換対象になってしまうため、うまくいきません。
    • good
    • 0

>ハイライトされているということは何かしらその文字についてマークがついているわけで、



それは確かにそうですけれども、プログラム(秀丸)内部での話です。
そのハイライト表示した文字列ににアクセスできるようなインターフェースを持っていない限りご希望のような操作はできないでしょう。

秀丸マクロを使えばもう少し細かいことができる可能性はありますけど、マクロヘルプを見た限りそのような機能はなさそうです。

#1の方の仰るように力技で確認しながら進めるか
#2の方の仰るようなやり方をもう少し工夫して正規表現で処理するかぐらいではないですか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2012/02/12 02:28

No1です。



> 一番スマートに解決するには、「ハイライト強調表示がされた文字列は置換対象から
> 除外する」という処理だと思っているのですが、ご存じないでしょうか?

では逆に質問しますが、その「ハイライト強調表示をどうやって行うのですか?人手だったら、都度確認して置換と同じことでしょう?これではちっともスマートではありませんが」

置換したくない例外が数個に対して、置換したいものは数十個ある…といったことなら、その例外だけをあらかじめ異なる単語に手で書き換えておき、置換処理後に元に戻すくらいしかやりようがないと思いますよ。
    • good
    • 0
この回答へのお礼

ハイライト強調表示は検索でつけることができます。
実は私の場合、「<任意の文字列>」という<>で囲まれた文字列を置換対象から除く必要があります。
<>ではさまれた任意の文字列については検索で一挙にハイライト強調表示させられます。
あとはこの部分が置換対象から除ければ万々歳なのですが、、、、
ハイライトされているということは何かしらその文字についてマークがついているわけで、その変数というのかなんというのかを引き数にマクロで置換対象外にできそうな気がするのですが、、、

お知恵をお願いいたします。

お礼日時:2012/02/10 23:59

秀丸エディタというわけではなく、一般的なアプリでの置換での話ですが、やはり名前の「一浪」と動作の「一浪」というように、まったく同じキーワードは機械には区別できないでしょうから、前後の文字を含む完全一致型のキーワード検索(あいまい検索にしない)でキーワードを探し、置換するのが間違いが少ないかと思います(これでも、100%と言い切るのは無理だと思いますが)。



名前だったら、「一浪が」「一浪は」「一浪の」「一浪へ」… と けっこう助詞も多いと思いますが、動作の場合は、「一浪する」「一浪した」と、サ行だけですみそうです。

よく出てきそうな、「一浪し」「一浪す」を「二浪し」「二浪す」に置換する、というような、前後の文字を含めた置換を繰り返すしかないと思います。

あとは、置換後に、再度一浪を検索して、チェックしていくしかないですね。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2012/02/10 16:24

置換を実行する前に、「置換の前に確認」チェックをオンにしておけば済む話では?



あまりにも対象が多量にあって、いちいち確認なんてやってられない場合は、置換文字列の与え方を工夫するしかないでしょう。「一浪」→「二浪」ではなく、「一浪が一浪」→「一浪が二浪」などのように。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お察しのとおり、変換対象が大量にあり、いちいち確認をやっていられない状況にあります、
例文が悪かったと思うのですが、置換対象はもっと変則的なものになります。

一番スマートに解決するには、「ハイライト強調表示がされた文字列は置換対象から除外する」という処理だと思っているのですが、ご存じないでしょうか?

お礼日時:2012/02/10 16:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!