正規表現検索で「a\n?」が「ab[EOF]」にマNo.13690
IKKI さん 02/12/17 02:41
 
はじめまして。 IKKI です。マクロライブラリの方ではお世話になっております。

既出でしたらごめんなさい。正規表現で「a\n?」を検索したとき、

 (1) 「ab[改行]」の a にはマッチする
 (2) 「ab[EOF]」の a にはマッチしない
   (ただし対象行にカーソルを置いて検索した場合はマッチする)

という動作をしますよね。(v3.19 + Win2000 で確認)
秀丸の正規表現検索の実装(\n の扱い)か、もしくは JRE32.DLL の実装によるもの
だと思いますが…。
この件、秀丸側で対応することは可能でしょうか。

[ ]
RE:13690 正規表現検索で「a\n?」が「ab[ENo.13692
ENCODINGSHIFTJIS さん 02/12/17 10:15
 
>この件、秀丸側で対応することは可能でしょうか。

a[\r\n]?   ×
a[\x0A\x0D]?  ○

でした。 テストのテキストは

ab

a

ab[EOF]


[ ]
RE:13692 正規表現検索で「a\n?」が「ab[ENo.13693
IKKI さん 02/12/17 11:24
 
> a[\r\n]?   ×
> a[\x0A\x0D]?  ○

なるほど。どうやら秀丸側で「\n という文字列」を特別扱いしてるのが原因であっ
て、他の表記法を使えば逃げられそうですね。
ありがとうございます。 > ENCODINGSHIFTJIS さん
秀丸側で \n の扱いを改善する余地はありますか? >秀丸担当さん

#関係ないけど、「a[改行]」に対して検索したとき
 「a[\x0D\x0A]?」だと改行までマッチするのに
 「a(|\x0D\x0A)」だと a しかマッチしないのが
 なんとなく納得いかないんですが…。

[ ]
RE:13693 正規表現検索で「a\n?」が「ab[ENo.13694
Arimac さん 02/12/17 12:35
 
>#関係ないけど、「a[改行]」に対して検索したとき
> 「a[\x0D\x0A]?」だと改行までマッチするのに
> 「a(|\x0D\x0A)」だと a しかマッチしないのが
> なんとなく納得いかないんですが…。

秀丸エディタからJRE32.DLLを呼び出すときには
行末は\x0Aだけなんですよ。
ただし、ファイルをgrepした時は\x0D\x0Aで
呼び出されます。

[ ]
RE:13694 正規表現検索で「a\n?」が「ab[ENo.13698
IKKI さん 02/12/17 18:02
 
>秀丸エディタからJRE32.DLLを呼び出すときには
>行末は\x0Aだけなんですよ。

ははー、そういうことだったんですねー。理解しました。ありがとうございます >
Arimac さん

[ ]
RE:13693 正規表現検索で「a\n?」が「ab[ENo.13701
秀丸担当 さん 02/12/17 19:00
 
>なるほど。どうやら秀丸側で「\n という文字列」を特別扱いしてるのが原因であっ
>て、他の表記法を使えば逃げられそうですね。
>ありがとうございます。 > ENCODINGSHIFTJIS さん
>秀丸側で \n の扱いを改善する余地はありますか? >秀丸担当さん

ヘルプの「\nを使った複数行検索の際の制限について」に関連する
ことだと思います。
が、EOFの行から検索開始するとヒットするので、あながち制限とも
いえないかもしれません。改善する余地はあると思います。
検討させていただきます。

[ ]