HmJre.dllの改良、後方一致/後方不一致指No.06178
秀まるお さん 05/02/16 14:32
 
 ここの会議室の06152番発言(Iranoanさんの話)と関係するのでここに書き込
んでしまいますが、後方一致/後方不一致指定についてだけ、正規表現の途中に
も書けるようにします。

 例えば、

 (?!x)[a-z]

 と書くと、xにはマッチしないけどもa-zにマッチするという意味になって、結
果として[a-wy-z]と同じ扱いになります。

 これとタグ付き正規表現を組み合わせて、例えば、

 ([a-z])((?!\1)[a-z])\2

 と書けば、foo see all などの、「1文字目と2文字目は一致しないけども2
文字目と3文字目が一致する3文字の単語」を検索することが出来ます。

 次の秀丸V5.00に付属予定のHmJre.dll Version1.5からそのようにします。

[ ]
RE:06178 HmJre.dllの改良、後方一致/後No.06182
Iranoan さん 05/02/16 20:07
 
 秀まるおさん今日は、Iranoan です。
>  ここの会議室の06152番発言(Iranoanさんの話)と関係するのでここに書き込
> んでしまいますが、後方一致/後方不一致指定についてだけ、正規表現の途中に
> も書けるようにします。
 どうも有り難うございます。

>  これとタグ付き正規表現を組み合わせて、例えば、
>
>  ([a-z])((?!\1)[a-z])\2
>
>  と書けば、foo see all などの、「1文字目と2文字目は一致しないけども2
> 文字目と3文字目が一致する3文字の単語」を検索することが出来ます。
 HmJre.hlp が更新されてからでもよいのですが、少し気になった事がありま
す。\1, \2 はどの部分を意味するのでしょう? 置換時は、「\f」で区切りま
すが。

[ ]
RE:06182 HmJre.dllの改良、後方一致/後No.06183
秀まるお さん 05/02/16 21:25
 
 \fで区切るやり方も今後ずっと使えますけど、それとは別に、Perl等での一般
的なタグ付き正規表現にも、次の秀丸V5.00/HmJre V1.5から対応します。「\f」
を使ってないにもかかわらず「\1」等を使った場合は、こっちのPerl等互換のタ
グ付き正規表現と解釈されます。

 で、新形式を使う場合は、\fで区切る代わりに、カッコで囲む形になります。

 pattern1 \f pattern2 \f pattern3 \f ...

 とやる代わりに、

 (pattern1)(pattern2)(pattern3)

 ってな具合になります。例えば、

 ([a-z])([0-9])

 とやると、\1は[a-z]にヒットした部分、\2は[0-9]にヒットした部分って意味
になります。こっちの新形式の場合は、この\1, \2がそのまま検索対象にも使え
ることが非常に有益でして、つまり、

 ([a-z])\1\1

 とすると、a-zの同じ文字が3回連続した場合みたいな表現が可能になります。

[ ]
RE:06183 HmJre.dllの改良、後方一致/後No.06184
Iranoan さん 05/02/16 22:50
 
 秀まるおさん今日は、Iranoan です。
>  \fで区切るやり方も今後ずっと使えますけど、それとは別に、Perl等での一般
> 的なタグ付き正規表現にも、次の秀丸V5.00/HmJre V1.5から対応します。
 成る程、ご説明有り難うございました。

[ ]
RE:06183 HmJre.dllの改良、後方一致/後No.07555
Iranoan さん 05/04/24 18:30
 
 秀まるおさん今日は、Iranoan です。
>  \fで区切るやり方も今後ずっと使えますけど、それとは別に、Perl等での一般
> 的なタグ付き正規表現にも、次の秀丸V5.00/HmJre V1.5から対応します。「\f」
> を使ってないにもかかわらず「\1」等を使った場合は、こっちのPerl等互換のタ
> グ付き正規表現と解釈されます。
 これは、HmJre.hlp にある
> ヒットした扱いにするタグ指定(HmJre.dll独自形式)
>
> (?\tag-number)
とは、また別ですよね。
 ##後者は、「(?\tag-number)」で指定した部分だけヒットした文字列の扱い、
つまり foundtopx, foundend 等の範囲となると解釈しています。

 この解釈が正しいとすると、このスレッドで書かれていること、ヘルプで言
うと、
> 一般的正規表現互換のタグ付き正規表現(V1.50から)
>     \1 \2 ...
の肝心の説明が、どこにも書いてない気がします。
 Perl 使いなら解るのでしょうが(^^)。

[ ]
RE:07555 HmJre.dllの改良、後方一致/後No.07594
秀まるお さん 05/04/26 08:34
 
 ヘルプに書いて無くてすみません。いろいろ並行して仕事してるとヘルプに書
き忘れてしまうことが多いです。

 そもそも、この辺の正規表現うんぬんの話は秀丸ヘルプに入れてもらいたい所
なので、そういう方向で調整したいと思います。

[ ]
RE:07594 HmJre.dllの改良、後方一致/後No.07602
Iranoan さん 05/04/26 11:58
 
 秀まるおさん今日は、Iranoan です。
>  そもそも、この辺の正規表現うんぬんの話は秀丸ヘルプに入れてもらいたい所
> なので、そういう方向で調整したいと思います。
 私はそれで構いません。
 ただ HmJre.DLL は別のソフトウェアにも使われていますよね。そうすると、
HmJre.hlp にも記載があった方が良いと思います。

[ ]
RE:07594 HmJre.dllの改良、後方一致/後No.07634
Iranoan さん 05/04/27 19:14
 
 秀まるおさん今日は、Iranoan です。
>  ヘルプに書いて無くてすみません。いろいろ並行して仕事してるとヘルプに書
> き忘れてしまうことが多いです。
 ヘルプへの追記有り難うございました。
 読んでいた、気になった点を幾つかご報告します。
> 後方一致指定の後ろにさらにパターンを指定すると、両方のAND指定という意味に
>なります。例えば、
>   abc(?=[a-z])([x-z]
 多分末尾の「)」が足りないのでは?。

>  前方一致/不一致、後方一致/不一致指定についてはタグ付き正規表現でのカッ
>コの対象外
> となります。例えば、"(abc)(?!xyz)(xyz)"というパターンを指定した場合での"\2
>"に該当す
> る部分は(xyz)部分となります。^^^  ^^^
>          ^^^
 解らない人が読む説明としては、不適切だと思います。「xyz」が 1 つ目な
のか 2 つ目のそれか解りにくいですよね。

[ ]
RE:07634 HmJre.dllの改良、後方一致/後No.07643
秀まるお さん 05/04/28 15:16
 
 毎度チェックありがとうございます。さっそく修正させていただきます。

[ ]
RE:07602 HmJre.dllの改良、後方一致/後No.07644
秀まるお さん 05/04/28 15:31
 
>  ただ HmJre.DLL は別のソフトウェアにも使われていますよね。そうすると、
> HmJre.hlp にも記載があった方が良いと思います。

 一応、HmJre.hlpの方も残しておきます。

[ ]
RE:07643 HmJre.dllの改良、後方一致/後No.07645
Iranoan さん 05/04/28 17:40
 
 秀まるおさん今日は、Iranoan です。
>  毎度チェックありがとうございます。さっそく修正させていただきます。
 いえいえ。こちらこそ色々有り難うございます。

[ ]
RE:07644 HmJre.dllの改良、後方一致/後No.07646
Iranoan さん 05/04/28 17:40
 
 秀まるおさん今日は、Iranoan です。
>  一応、HmJre.hlpの方も残しておきます。
 有り難うございます。

[ ]