hmjre Perl互換タグ付き置換No.07402
h-tom さん 05/04/16 23:05
 

h-tom です。

Perl互換の括弧を使ったタグの置き換えで、置換側の"\1"で指定した文字が
消えてしまう場合があります。

//テスト用文字列
abcdef12345
abcdef1
abcdef23456
abcdef2
abcdef56789
abcdef5
//ここまで

//Prel互換の場合
検索:[a-z]+([0-9])
置換:\1

//置換結果
2345  <-- ([0-9])にマッチしている"1"が消えてしまう。
1
3456  <-- ([0-9])にマッチしている"2"が消えてしまう。
2
6789  <-- ([0-9])にマッチしている"5"が消えてしまう。
5
//ここまで


"\f"を使った場合と検索に"[a-z]+([0-9]+)"指定すると正常に置き換わります。
検索:[a-z]+\f[0-9] または [a-z]+([0-9]+)
置換:\1

//置換結果
12345
1
23456
2
56789
5
//ここまで

[ ]
RE:07402 hmjre Perl互換タグ付き置換No.07432
秀まるお さん 05/04/18 13:07
 
 一応、僕の所で簡単なテストをした限りは再現しませんでした。

 何かのオプションが関係してるのかもしれませんけど。

> Perl互換の括弧を使ったタグの置き換えで、置換側の"\1"で指定した文字が
> 消えてしまう場合があります。

 「場合がある」というのは、つまり、同じ条件で置換をしても、うまくいく場
合とうまくいかない場合があるってことですかね?。

 何か、うまくいかない時とうまくいく時の違いのような物が分かると助かりま
すが…。例えば全置換で「スピードアップ」を押した場合に限ってダメとか?

[ ]
RE:07432 hmjre Perl互換タグ付き置換No.07436
はしもと さん 05/04/18 16:27
 
はしもとです。

> 何か、うまくいかない時とうまくいく時の違いのような物が分かると助かりま
>すが…。例えば全置換で「スピードアップ」を押した場合に限ってダメとか?

元投稿者ではありませんが、ふと気になって同じ実験をしてみました。

「置換の前に確認」と「検索結果の強調」をONにして検索し、
「置換+次」を押すと再現するようです。

ご確認ください。

[ ]
RE:07436 hmjre Perl互換タグ付き置換No.07440
秀丸担当 さん 05/04/18 18:48
 

>元投稿者ではありませんが、ふと気になって同じ実験をしてみました。
>
>「置換の前に確認」と「検索結果の強調」をONにして検索し、
>「置換+次」を押すと再現するようです。

この設定でやってみたところ、再現させることができました。
検索文字列の強調を同時に表示してしまっている関係でまずいことになっていま
した。
修正させていただきます。

[ ]