正規表現でカッコ指定部分の参照No.04961
mizutori さん 05/12/09 02:15
 
秀丸バージョン: 5.10
システム環境: Windows 2000sp4

正規表現を使って、カッコ指定部分を置換したいのですが、
下記の1の場合、置換結果がおかしくなります。カッコで
グループ指定しているので、本当は<xxx>となるはずなのに、
なぜか、<> になってしまいます。何が悪いのでしょうか。
置換ではカッコに対する参照は使用できないのでしょうか。


■元テキスト
aaaxxxbbb
cccyyyddd

■1 失敗する例
検索: (xxx|yyy)
置換: <\1>

正規表現による置換後の結果テキスト
aaa<>bbb
ccc<yyy>ddd

■2 成功する例
検索: \fxxx|yyy\f
置換: <\1>

正規表現による置換後の結果テキスト
aaa<xxx>bbb
ccc<yyy>ddd

[ ]
RE:04961 正規表現でカッコ指定部分の参照No.04962
三月 さん 05/12/09 06:19
 
>
>正規表現を使って、カッコ指定部分を置換したいのですが、
>下記の1の場合、置換結果がおかしくなります。カッコで
>グループ指定しているので、本当は<xxx>となるはずなのに、
>なぜか、<> になってしまいます。何が悪いのでしょうか。
>置換ではカッコに対する参照は使用できないのでしょうか。
>
http://www.maruo.co.jp/turukame/3/x08874_.html#8874
の現象と同じ現象で
http://hide.maruo.co.jp/software/hidemaruhist_pre.html

>(pattern1|pattern2|...) のような部分にpattern2以降がヒットした場合に、その
>部分をタグとして取り出すとおかしくなる(空っぽになる)バグ修正。
とあるので、Ver5.12β2 を試すか、5.12正式版を待つかすれば
良いと思われます。

[ ]
RE:04962 正規表現でカッコ指定部分の参照No.04965
mizutori さん 05/12/10 09:47
 
>>(pattern1|pattern2|...) のような部分にpattern2以降がヒットした場合に、その
>部分をタグとして取り出すとおかしくなる(空っぽになる)バグ修正。
>とあるので、Ver5.12β2 を試すか、5.12正式版を待つかすれば
>良いと思われます。

教えていただき、ありがとうございました。
最新のバグ(?)だったようですね(苦笑)。

早速、Ver5.12β3 (2005-12-09付)を試してみました。
/(xxx|yyy)/ --> "<\1>" の置換は成功することを確認しました。

秀丸の正規表現は、標準と違ってちょっとクセがあるので、
仕様なのかバグなのか、迷うことが多々あります。(辛口批評 :-)

[ ]
RE:04965 正規表現でカッコ指定部分の参照No.04966
アルビレオ さん 05/12/10 16:25
 
アルビレオです。

>秀丸の正規表現は、標準と違ってちょっとクセがあるので、
>仕様なのかバグなのか、迷うことが多々あります。(辛口批評 :-)

本題とは関係ないですが、正規表現には「標準」がないんですよ。
共通に使えるのはメタキャラクタの ^$.?*[] ぐらいで、それ以外はほぼすべて
「独自拡張」なんです。

[ ]