Refsort/Ruby v2.52 Released
辞書参照型ソーティングフィルターをスクリプト言語 Ruby で実装した Refsort/Ruby の開発を10年以上続けています(例えば新しいほうから順に *1 *2 *3 *4 *5 *6 *7 *8 *9 *10 *11).もう仕様は落ち着いていて機能の追加をするつもりはなく,細々とバグのメンテナンスを行っている状態です.
前回のリリースはつい最近,今年2017年の4月だったのですが,埋め込みマイルストーンの機能拡張でもやろうかと思ってスクリプトをいじっているうちに,私の理解不足から正規表現にバグがあることが発覚しましたので,慌てて応急処置をとったのが今回のリリースです.
幸いなことに,私がこれまでリリースした辞書ファイルを使う限りにおいては,このバグが顕在化することはなく人畜無害なのですが,とにかく明瞭なバグなので修正版をリリースします.
どういう箇所かというと,辞書ファイルを読み込んだり最終的な出力処理を行うときに,埋め込みマイルストーンを探す必要があるのですが,このときに正規表現内でキャプチャと後方参照を使います.その後方参照を文字クラスの中でも使えると誤解していたのが間違いでした.例えば以下のような表現です.
/^(#!m\s*(\S)\2*[^\\2][^#]*)/
ここで \2 というのは (\S) でキャプチャした非空白文字をそのあとで参照するためのものなのですが,これを文字クラス [...] の中でも使えると誤解していました.これは間違いなので,以下のように修正しました.
/^(#!m\s*(\S)\2*(?!\2)\S[^#]*)/
ここで,(?!\2)\S というのがミソで,これは否定先読みという表現.詳しい説明は省きますが,\2 ではない非空白文字一文字を表現したことになり,私が意図したとおりの動作をすることを確認しました.これは Ruby のユーザーズフォーラムで質問し,ある方から親切に教えていただいたので何とか修正できた次第です.
繰り返しになりますが,機能の追加は何もなく,Ruby の最新版 v2.4.1p111 で動作することを確認しています.
また近日中にユーザーズガイドを改訂してアップする予定です.
| 固定リンク | 0
「パソコン・インターネット」カテゴリの記事
- WSL2 をインストールして使っています(2024.06.19)
- Windows 再インストール時に VMD でハマる(2024.04.13)
- Microsoft Teamsの複雑な仕様がやっとわかった(2023.08.20)
- Xeonマシンを組みたくなった(2023.05.21)
- 音楽ライブラリを再構築(2023.04.28)
「自然」カテゴリの記事
- 暑い夕方の月(2024.09.06)
- IOC List v14.2 Released(2024.08.27)
- 田んぼの近況(2024.06.07)
- ジューンベリーも実った(2024.05.24)
- クワの実がなった(2024.05.23)
「IT関連情報」カテゴリの記事
- IOC List v14.2 Released(2024.08.27)
- Ruby を自力ビルドしてみた(2024.07.25)
- Excel上でPythonが使える(2024.07.15)
- WSL2 をインストールして使っています(2024.06.19)
- Windows 再インストール時に VMD でハマる(2024.04.13)
コメント