|
こんばんは。秀丸ユーザの「でるもんた・いいじま」です。
> 台名の通り正規表現を用いた置換をしたいと考えています。
> replaceall "”(.*)”","\“\\1\”",regular;
> 上記マクロで実行した場合、下記の通りになります。
> ”文字”文字”文字”
> ↓
> “文字”文字”文字”
>
> 理想としては下記のようにしたいです。
> “文字”文字“文字”
正規表現の「*」「+」は通常、可能な限り最も長い範囲にマッチします。
今回の場合、「(.*)」が「文字”文字”文字」にマッチしてしまって
いるので、置換が1回だけ発生して、上記のような結果になります。
対策は2つほどあります。
まず、秀丸の正規表現では「*?」「+?」という書き方ができます。
これを使うと、可能な限り短い範囲にマッチするようになります。
あるいは、他のソフトウェアでこれらが使えない正規表現エンジンを
使っている場合、「[^”]*」で目的を達することができます。
それと蛇足ですが、全角のダブルクォートは特殊な意味を持つ文字では
ありませから、、「\”」と書く必要はありません。
replaceall "”(.*?)”","“\\1”",regular;
replaceall "”([^”]*)”","“\\1”",regular;
|
|