最終更新日 2024-09-25
「hmV8」の例題 正規表現
概要
正規表現のエクササイズをみてみましょう。
.NET Frameworkの正規表現を利用することも可能ではありますが、
ES6には正規表現が組み込まれていますので、これを利用するのが良いでしょう。
上図のように選択して実行すると、数値が1つ増えるのがわかります。

エディタの文字とECMAScriptの正規表現、簡単な.NET
/*
* This codes is licensed under CC0 1.0 Universal
*/
#JS = loaddll( hidemarudir + @"\hmV8.dll" );
#r = dllfuncw( #JS, "DoString", R"JS(
// 置き換え対象とするパターン
// 前部(prev) + 数字(num) + [改行がありかも(post)] + 文末
let ReplaceRegexp = /^(.*?\D)?(\d+)([\r\n]+)?$/;
// 置き換えの定義
let ReplaceAlgorithm = (all, prev, num, post) => {
prev = prev || "";
post = post || "";
// 「数字部分」を「数値解釈上1足したもの」を返す
return prev + (+num+1) + post;
}
try {
// 選択対象の内容。(通常選択か行選択が対象。矩形選択や複数矩形選択は対象外。)
let SelectedText = hm.Edit.SelectedText;
if (!SelectedText) { throw "未選択"; }
// テキスト置換の試行
let ReplacedText = SelectedText.replace( ReplaceRegexp, ReplaceAlgorithm );
if ( SelectedText == ReplacedText ) { throw "変更箇所なし"; }
// 選択対象へと上書き
hm.Edit.SelectedText = ReplacedText;
} catch(e) {
// 例外だと気付きを得るための効果音。
clr.System.Media.SystemSounds.Beep.Play();
// デバッグモニタに例外理由
hm.debuginfo(e);
}
)JS"
);
freedll( #JS );