鬼車#3

2175 letters | 734 views | コメントする

本当に速くて、もうTRegExprに戻る気になれなくなった。
せっかくTRegExprの英語ヘルプを写したのに、消して鬼車にするのか。
しかも、生で200KB、UPX圧縮で75KBほどのDLLを一個添付。
それもやもえないほどのスピードだ。いや、TRegExprが遅いだけだが。
TRegExprのヘルプにユニコードでの動作は遅いって書いてあるしね。

あと、挙動に対してもとても満足している。
満足できなかった部分もあるけど、Delphi側からつじつま合わせ出来る程度だし。
その好みの挙動について。

0000000000
↑に対して、.{5}で検索をかけたとする。結果は当然、
‘00000’00000
↑って事になる。そこでF3キーで、次を検索させた場合、どうなって欲しい?
0’00000’0000
↑あたしゃこうなって欲しい。
00000’00000′
↑でも、こうなるのが正解だって人もいると思う。
メモ帳で、0000000000に対して、00000で検索した場合、
あたしが望んでいる方の結果にはならない。
なるべくメモ帳の動作を正解としている真魚にとって、現在の動作は正しくない。
では、次は逆方向への検索を検証してみる。

上記の検索をしていて、
00000’00000′
↑の状態になったら、逆方向に検索させるとメモ帳では、
0000’00000’0
↑ということになるのだ。おかしいではないか。
‘00000’00000
↑の「次を検索」が
00000’00000′
↑なら、反対方向に「次を検索」したら
‘00000’00000
↑にヒットするのが当たり前だと思うんだがね。
今まで結構メモ帳を持ち上げてきたけど、コレはどうしても許せん。

で、他のエディタがどんな動作をしているかというとバラバラでまいってしまう。
上を検索と下を検索の挙動の組み合わせに、納得できるスタンダードはない。
さて、真魚の挙動は、
‘00000’00000 ←→ 0’00000’0000 ←→ 00’00000’000 ←→ 000’00000’00
という風に、順方向への検索と逆方向への検索が同じ結果を返す。
というのも、逆方向への検索は、順方向への検索のUndoにしか使わないから。
それ以外に何があるというのだ。
検索も置換も、Undo以外に逆方向に進めるのは人として不自然だ。
文章を逆から読んでいく変った人に配慮したエディタを作る気はないぞと。

でも、試した中では真魚と同じ挙動なのはK2Editorくらいだから、
これもTEditorに毒されたあたしの間違った常識なのかもな。
サクラは ‘00000’00000 ←→ 00000’00000′ だから、挙動に納得は出来る。
EmEditorは一見、真魚と同じに見えるが、
aaa1aaa1aaa1に対して、.+1で検索すれば、
順方向では開始位置から最後までがヒットするのに逆方向ではa1だけがヒットする。
これも全く納得できない理解不能な動作だ。
真魚では、開始位置が前後に1文字ずつ移動しながら、最後までをヒットさせる。
これなら、たとえ誰が納得しなくてもあたしとK2氏が納得できる動作である。

というわけで、あたしの納得いく動作を実現できるライブラリである必要もあるのだが、
TRegExprも鬼車も、この動作をバッチリ実現出来る。
EmEditorに使われていると言われているBoostでは出来ないのかも知れない。
「出来ない」って書くと叱られそうだから、「方針が相容れない」とでもフォローしておくか。

ともかく、鬼車は好みの動作をさせれる速い正規表現であり、
その利用の仕方を教えてくれたKm氏がグッジョブだよと。
いうわけで、もう鬼車移行で腹をくくった。

4839913870
4839913870

たぶん関連のある記事:

コメントは終了しています。