HMJRE.DLL 要望:前方参照No.02217
IKKI さん 03/07/10 14:17
 
IKKI@便乗要望です。

>  あんまり要望も出てないような気がするし、あいまい検索にしてもひろさん以
> 外はあんまり使ってない気もするので、HmJre.dllについてはこの辺で仕様FIXし
> ようかなぁと思います。

あいまい検索のドタバタが落ち着くのを待っていました。(^^;

> {n,m}という表記はぜひ付け加えて欲しいです。
> 互換性の問題がなんらかの形で解決できたならば実現をお願いします。

ぜひ付け加えて欲しい機能にもうひとつ、長さゼロの先読み(前方参照)

  hoge(?=fuga)  // 後ろに fuga が続く hoge にマッチ
  hoge(?!fuga)  // 後ろに fuga が続かない hoge にマッチ

をお願いします。

これが実現されると、今まで皆さんが悩んできた強調表示/コメントの
カラー表示に関する問題の多くが解決できる可能性があります。

(? という表記は JRE32 では意味を持たないので互換性の問題はないかと
思いますが…

ご検討いただけますでしょうか。

[ ]
RE:02217 HMJRE.DLL 要望:前方参照No.02218
秀まるお さん 03/07/10 14:56
 
> ぜひ付け加えて欲しい機能にもうひとつ、長さゼロの先読み(前方参照)
>
>   hoge(?=fuga)  // 後ろに fuga が続く hoge にマッチ
>   hoge(?!fuga)  // 後ろに fuga が続かない hoge にマッチ

 googleで検索してみましたが、うまくヒットしないです。("?="で検索しても
無理か)

 何か、その辺の意味を解説してるページがあれば教えて欲しいです。または解
説して欲しいです。

 hoge(?=fuga)は、つまり、「hogefuga」を見つけたらそれのhoge部分にだけヒ
ットするという意味ですかね?

[ ]
RE:02218 HMJRE.DLL要望:前方参照No.02221
IKKI さん 03/07/10 15:24
 
レスありがとうございます。

> > ぜひ付け加えて欲しい機能にもうひとつ、長さゼロの先読み(前方参照)
> >
> >   hoge(?=fuga)  // 後ろに fuga が続く hoge にマッチ
> >   hoge(?!fuga)  // 後ろに fuga が続かない hoge にマッチ
>
>  googleで検索してみましたが、うまくヒットしないです。("?="で検索しても
> 無理か)

「正規表現 先読み」で検索すると引っかかりますが……たとえば

http://www.kt.rim.or.jp/~kbk/regex/regex.html#POSITIVELOOKAHEAD
http://www.cog.ist.i.kyoto-u.ac.jp/~takahashi/notes/regex_forward_match.html
http://namazu.org/~tsuchiya/perl/info/perl-ja_49.html

あたりが参考になると思います。

>  hoge(?=fuga)は、つまり、「hogefuga」を見つけたらそれのhoge部分にだけヒ
> ットするという意味ですかね?

そうですそうです。ヒットした文字列に fuga が含まれないのがポイントです。

[ ]
RE:02221 HMJRE.DLL要望:前方参照No.02267
秀まるお さん 03/07/14 18:42
 
 今さらのコメントですが、対応します。

[ ]
RE:02267 HMJRE.DLL要望:前方参照No.02275
IKKI さん 03/07/15 14:52
 
>  今さらのコメントですが、対応します。

ありがとうございます!
強調表示やマクロだけでなく通常の置換でも、今まで技巧的な処理を余儀なくされて
た部分がかなりスマートに書けるようになりそうです。期待しています。

ただ、コメント部分を独自の強調表示で色付けするような場合は前方先読みだけでは
不十分で、後方先読み

  (?<=hoge)fuga  // 直前に hoge がある fuga にマッチ
  (?<!hoge)fuga  // 直前に hoge がない fuga にマッチ

が欲しくなるかもしれません。こちらは正規表現の中でもマイナーな機能(サポート
してるのは Perl と Python だけ?)ですが、秀丸でも使えるようになったら素晴ら
しいと思います。

[ ]
RE:02275 HMJRE.DLL要望:前方参照No.02309
ひろ さん 03/07/18 23:12
 
 IKKI さん今日は、ひろです。
> 後方先読み
>
>   (?<=hoge)fuga  // 直前に hoge がある fuga にマッチ
>   (?<!hoge)fuga  // 直前に hoge がない fuga にマッチ
 確かにこれがが出来ると便利ですね。
 手近なところでは、(?<![A-Za-z])word(?![A-Za-z]) で英文の単語が検索で
きますね。
 マクロでも今は、単語を置換をするのは結構面倒ですからね。

[ ]
RE:02309 HMJRE.DLL要望:前方参照No.02501
秀まるお さん 03/07/30 11:06
 
 今さらここの会議室を見直してコメントさせていただきます。

>   (?<=hoge)fuga  // 直前に hoge がある fuga にマッチ
>   (?<!hoge)fuga  // 直前に hoge がない fuga にマッチ

 前者については簡単に対応できると思います。なので今から対応します。

 後者については、時間のかかる方法で実現する方式なら思いつきますが、高速
に処理する方法がいまいち思いつかないです。とりあえず保留させていただきま
す。

[ ]
RE:02501 HMJRE.DLL要望:前方参照No.02505
Iranoan さん 03/07/30 12:15
 
 秀まるおさん今日は、Iranoan です。
> >   (?<=hoge)fuga  // 直前に hoge がある fuga にマッチ
> >   (?<!hoge)fuga  // 直前に hoge がない fuga にマッチ
>
>  前者については簡単に対応できると思います。なので今から対応します。
>
>  後者については、時間のかかる方法で実現する方式なら思いつきますが、高速
> に処理する方法がいまいち思いつかないです。とりあえず保留させていただきま
> す。
 特に欲しかったのは後者ですが、前者が出来るだけでも助かります。具体的
には、マクロの unicode 文と openfile の unicode オプションが見分けられ
ます(^^)。

[ ]
RE:02505 HMJRE.DLL要望:前方参照No.02511
秀まるお さん 03/07/30 14:46
 
>   (?<=hoge)fuga  // 直前に hoge がある fuga にマッチ
>   (?<!hoge)fuga  // 直前に hoge がない fuga にマッチ

 後者についてもそれなりの動作速度で対応できました。ただし、1つ制限があ
ります。

 例えば(?<=abc)xyzのパターンにて、abcxyzという文字列の「b」の部分から検
索開始した場合、ヒットしません。

 前方一致/不一致の対象自体が検索開始位置以降に入ってないとダメって仕様
にしてしまいました。こうしないと、後方部分がヒットした時に、そのヒットし
た位置の前方の文字数分だけ正規表現のマッチングを繰り返さないといけなくな
って、とても遅くなるからです。カラー構文に使う分にはこういう制限があって
も問題ないと思いますので、そうします。

[ ]
RE:02511 HMJRE.DLL要望:前方参照No.02522
Iranoan さん 03/07/30 18:12
 
 秀まるおさん今日は、Iranoan です。
>  後者についてもそれなりの動作速度で対応できました。ただし、1つ制限があ
> ります。
>
>  例えば(?<=abc)xyzのパターンにて、abcxyzという文字列の「b」の部分から検
> 索開始した場合、ヒットしません。
 この仕様で構いません。どうも有り難うございました。

[ ]