改行を含んだ正規表現検索No.35070
おすぎ さん 16/06/15 13:11
 
お世話になっています。

2つのキー文字に挟まれた文字列を検索したいと思っています。
ただし、その文字列の途中に改行が含まれている場合も含めてです。

例)次の2つの「あいうえお」を一括して検索したいと思っています。

AあいうえおB

Aあい
うえおB


(?\1)A(.+?\n?.+?)B では@しかヒットしません。

うまい検索方法があったら教えて下さい。
基本的な質問ですみません。

よろしくお願いいたします。

[ ]
RE:35070 改行を含んだ正規表現検索No.35071
秀まるお2 さん 16/06/15 15:18
 
 テストしてみてうまくヒットせず、ソースコードのトレースなどしてみたら、
すみませんがバグのようでした。

 大変失礼しました。

 「.+」や「.+?」の処理で、検索対象文字列の途中に改行文字がある場合に特
別な高速化の処理をしてまして、それのせいでうまくヒットしてませんでした。

 とりあえずの回避策として、

    (?\1)A(.+?(\n?).+?)B

 か、または、

    (?\1)A(.+?\n?(.+?))B

 のように余計な括弧を入れてやると、特別な高速化処理が回避されてうまく動
作するようではあります。

 どっちにしてもHmJre.dll側を修正して、次の秀丸エディタのβ版に添付させ
ていただきます。

[ ]
RE:35071 改行を含んだ正規表現検索No.35072
おすぎ さん 16/06/15 16:11
 
バグだったんですね。
それなら良かったです。
自分の正規表現の理解がおかしくなったかと思いました(笑)

回避策、さっそく使用します。

ありがとうございました。

[ ]