|
いつもお世話になっています。
正規表現のコミュニティにあがった質問の回答を書いていたとき、ちょっと気に
なる現象があったので、ご報告します。秀丸エディタのバージョンはVer.6.50
β27、正規表現dllはHMJREのVer1.82です。
質問は、↓で、
------------------
500行で1行50文字の英字小文字があります
その中から右下方向にappleと並んでいるところを探す方法はありませんか?
右下方向は
abisc
bpsqr
bvpzl
dbdlf
qzpde
こういう感じで
------------------
これを↓の正規表現で検索しようとしたのです。
a(.|\n){51}p(.|\n){51}p(.|\n){51}l(.|\n){51}e
で、以下の文字列でテストをしてみると……
------------------
abisc01234a5678901234abisc5678a9012345678901234567
bpsqrabisc01234567589bpsqr012345678901234567890123
bvpzlbpsqrabisc012534bvpzl56789a012345678901234567
dbdlfbvpzlbpsqrab5iscdbdlf012345678901234567890123
qzpdedbdlfbvpzlbpsqrqz5pde012345678a90123456789012
01234qzpdedbdlfbvpzl567890123456789012345678901234
0123456789qzpdedbdlf012345678901234567890123456789
012345678901234qzpde567890123456789a01234567890123
01234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789
------------------
最初のヒットは、文字列頭の"a"からでこれはOK。
ところが、2回目のヒットが、その次の"a"、つまり、"01234a56789"の"a"、2行
目の最初の"0"の"a"から5行目半ばの"e"までとなります。これ、a(.|\n){51}pが
狂った状態でヒットしています。
3回目のヒットは、そのまた次の"a"、つまり1行目半ばの"a"から2回目ヒットの
末尾までとなります。これもOK。
4回目以降のヒットも問題、ないようです。
Best regards,
Buckeye
|
|