New Extension! REGEX ECMA Beta.01 Public


Clickteam Fusion 2.5 (以下 CF25) Windows PC 用ベータ版エクステンションを公開します。
REGEX 2022 Beta は CF25 で正規表現( Regular Expression )を利用できるようになる拡張機能です。


ダウンロードリンク:配布終了

正規表現とは

文字列の集合(パターン)を簡潔に表現し、文字列に対する高度な検索・置換を実現できる機能です。

アメリカの数学者スティーヴン・コール・クリーネ( Stephen Cole Kleene )が 1951 年に発明した表記法がベースになっていて、後にケン・トンプソン( Kenneth Lane Thompson )によって Ken’s CTSS QED というメインフレーム・コンピュータ用のエディタに「正規表現」がコンピュータ史上初搭載されました。ケン・トンプソンは後に UNIX を作り、UNIX に標準搭載された ed というエディタから派生して Bill Joy (後の BSD UNIX 創設者)がフルスクリーンエディタ「 vi 」を作りました。

正規表現は UNIX 上で発展を遂げた後、現代ではあらゆるコンピュータ上で大量の文字列を扱う際の必須技術となっています。

MMF2 Dev 版 Regex について

MMF2 Dev 版向けエクステンションとして「Regular Expression Extension(以下 旧 Regex Extension )」が Chris Branch によって 2004 年頃公開されています。このエクステンションは MMF2 用で、CF25 上では動くもののユニコード非対応。旧 Regex Extension は凝った拡張機能なので非常にもったいないのですが、CF25 上では英語圏の人しか機能的恩恵にあずかれませんでした。

CF25 版 Regex の開発

旧 Regex Extension は POSIX/Perl Regex をサポートしていますが、prester.org 版では C++17 STL の Regex ライブラリを使う都合上 ECMAScript Regex(エクマスクリプト = JavaScript の標準規格)の文法にのみターゲットを絞って作ります( 特に Perl Regex のサポートは不要だと考えている)。

大多数が正規表現というものを現在 ECMAScript Regex の文法に準じてネット上で教えていることもあり、あえて Perl・POSIX 版を新規で学習する人は少数派のはずだからです。

正規表現の種類とか

正規表現には亜種が複数あります。

POSIX と Perl が歴史も古く特に Perl Regex は文法的な拡張によって高機能なことで知られ、一方で Perl Regex Grammar は文法定義にあいまいな部分を持つため現代では実装が困難とも言われています。Perl Regex は正規表現を世に広く普及させた点で功績が大きいものの将来性は暗く、現代ではあまり重要でなくなってきています。

ECMAScript Regex は JavaScript 上に実装された正規表現です。これは新しい分しっかり文法定義もなされ、JavaScript が廃れない限り ECMAScript Regex も安泰という安心感があります。

旧 Regex Extension は Boost C++ Libraries (オープンソース・ライブラリ)を使って作られ、ブースト ( Boost )版 Regex では Perl Regex をサポートしていました。C++ 標準ライブラリ(以下 C++ STL )が正規表現をサポートしたのは 2011 年 08 月改訂された C++11 からで、これは Boost C++ Libraries の Regex をベースに標準化したものです。C++11 STL の Regex は ECMAScript と互換性があり POSIX Regex もサポート、プロファイルを選択できます。しかし Perl Regex は C++11 STL で対象外とされ現在も標準化からは完全に除外されています。

開発コンセプト

正規表現をまじめにやろうとすると旧 Regex Extension みたい複雑になってしまうので、2020 年代の今なら主流となった ECMAScript Regex に対応を絞って、機能もなるべく簡潔化して、簡易版 REGEX として作っても実用上不便も生じないだろうと考えています。特にこのベータ版では筆者が必要だった Regex Replace 機能だけを実装してあり、ただこれだけでも CF25 上でかなりのことができるようになります。

おまけ機能としてやはり筆者が必要だった Set Window Position もこの拡張に含まれています。これは正規表現と全く関係ないのですが実装が簡単なのでついでに作りました。

一応ベータ版としてブログで先行公開しますが、ライセンスなどはアーカイブ内部に記述があります。フリーウェアです。

アーカイブには動作サンプルも含まれていますがヘルプファイルとかは未実装で、あるいは機能についての具体的な説明とかが不足している可能性はあります。動作確認もほぼ筆者の環境のみで行われただけなので不足しています。バグ報告などがあった場合は修正対応させていただきますが当分の期間ベータ版として公開します。いずれ不足分を補えたら専用ページを作り Clickteam フォーラムで投稿を予定しています。

Leave a comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です