タグ付き正規表現で tag-number が大きくNo.01373
Iranoan さん 08/05/24 16:27
 
 秀まるおさん今日は、Iranoan です。
<item about="hoge">
  <title>TITLE</title>
という文字列で、検索文字列を
(<item about=")(.+?)(">[\n\t ]*<title>)(.+)(</title>)(?\3)
などの tag-number が 3 までは期待通りの動作なのですが、4 以降はヒット
しなくなってしまいます。
 こちらの環境は、秀丸エディタ/秀丸メール+HmJre.dll Ver.1.92 です。

[ ]
RE:01373 タグ付き正規表現で tag-number No.01374
秀まるお さん 08/05/26 10:21
 
 これは仕様にするしか無いんじゃないかと思います。HmJre.dllとしてはヒッ
トしたように返しているんですが、秀丸エディタ側がはじいています。

 \nを1つ含んだ検索をする場合、2行単位で文字列をHmJre.dllに渡します。
HmJre.dllがヒットした位置を返す時に、もしその位置が改行文字よりも後ろで
ある場合には、秀丸エディタはヒットした扱いにしないです。

 この仕様をいまさら変更すると、具体的にどういうケースとは言えませんが、
何か今までとは違う結果になって困るってケースが発生する可能性が高いんじゃ
ないかと思います。

 一応、秀丸担当にもこういう話があるってだけ回送してみますけど。

[ ]
RE:01374 タグ付き正規表現で tag-number No.01375
Iranoan さん 08/05/26 14:15
 
 秀まるおさん今日は、Iranoan です。
>  一応、秀丸担当にもこういう話があるってだけ回送してみますけど。
>  これは仕様にするしか無いんじゃないかと思います。HmJre.dllとしてはヒッ
> トしたように返しているんですが、秀丸エディタ側がはじいています。
 解りました。
 改行が在っても上手くいくようになると良いのですが、現状では仕方がない
ですね。

>  一応、秀丸担当にもこういう話があるってだけ回送してみますけど。
 よろしくお願いします。

 そこで質問なのですが、秀丸エディタ側ではじいているとの事ですが、これ
は GetLastMatchTagPosition(), GetLastMatchTagLength() を使った場合も同
じ動作です。これも秀丸エディタ側ではじいているという理解でよろしいで
しょうか?

[ ]
RE:01375 タグ付き正規表現で tag-number No.01376
秀まるお さん 08/05/26 14:22
 
 ヒットしなかった扱いになった場合はそこからさらにファイル末尾方向に検索
するので、ヒットしたときの情報は取得できないです。

 ヒットしたときのJRE2構造体でそのままヒットしない検索が実行されてしまう
わけなので、最終的にJRE2構造体はヒットしてない状態で検索が終了し、そうす
るとGetLastMatchTagPositionとかでもいい結果は返ってこないです。

[ ]
RE:01376 タグ付き正規表現で tag-number No.01377
Iranoan さん 08/05/26 16:04
 
 秀まるおさん今日は、Iranoan です。
>  ヒットしなかった扱いになった場合はそこからさらにファイル末尾方向に検索
> するので、ヒットしたときの情報は取得できないです。
 ご説明ありがとうございました。

[ ]