VSCode、JavaScriptの正規表現でMarkdownの数式を置換するときにハマったところ

はじめに

最近JavaScriptで文書の置換ソフトを作ろうとしているんですが、VSCodeでまず正規表現を試そうとしてうまくいかなかったので、その対処法を備忘録的に紹介します。

JavaScriptにて

直感的な方から先に紹介します。例えば、以下のようなLaTeXの数式が混在しているMarkdownがあるとします。

ああああああ$ABC$テストです。
$$
x = 2y
$$$a$意味もない数式$x$を使って$$
y = ax$$と表せる

これを、JavaScriptで行の数式("$$~~$$")だけ置換しようとすると以下のようなコードが書けます。

`ああああああ$ABC$テストです。
$$
x = 2y
$$$a$意味もない数式$x$を使って$$
y = ax$$と表せる`.replace(/\$\$([\s\S]+?)\$\$/g, "{$1}")

// ->
// "ああああああ$ABC$テストです。
// {
// x = 2y
// }$a$意味もない数式$x$を使って{
// y = ax}と表せる"

普通の正規表現で置換することができました。

VSCodeにて

正規表現\$\$([\s\S]+?)\$\$をそのまま使って検索をすると、以下のように間違った部分がハイライトされます。

f:id:yuppi5:20190929223848p:plain
間違ったハイライト
うーん、これは良くないですね。

そこで、正規表現に改行を明示的に含めることにします。\$\$([\s\S\n]+?)\$\$とします。

f:id:yuppi5:20190929224106p:plain
正常な検索
すると正常にハイライトされました。この状態であれば思い通りに置換することができます。
f:id:yuppi5:20190929224145p:plain
祝!正常に置換されました!

最後に

VSCodeのドキュメントも読んでいないのでもしかしたらこれが仕様かもしれません。

自作VVVFインバーターのためのPWM波形再現 (4) スペクトルとキャリア周波数 #床下電子音楽

前回:(3)信号波とキャリア

  • はじめに
  • すべての変数を固定
  • 信号波周波数$f_s$を変える
  • 信号波振幅$A_s$を変える
  • キャリア周波数$f_c$を変える
  • まとめ

はじめに

今回は今までに得た知識を使って音を作り、そのスペクトルを見ていきます。最終的に、VVVF(可変電圧・可変周波数)を実現するためのパラメーター(変数)の操作方法と、電車の音の主成分であるキャリア周波数$f_c$がモーターの回転速度に関係なく設定できるということを示します。

スペクトル画像の生成にはWaveToneを使いました。

なお、パルス数$P$は今回使わず、キャリア振幅A_cは1で固定しています。また、音は線間電圧を生成したものです。

続きを読む

自作VVVFインバーターのためのPWM波形再現 (3) 信号波とキャリア #床下電子音楽

前回:(2)線間電圧と相電流

  • はじめに
  • 三角波の関数$\mathrm{tri}$について
  • 三角波の実装
  • 信号波とキャリアの別名称
  • 扱う変数
  • 変数の記号の由来
  • まとめ

はじめに

前回は再現に直接関係のない寄り道でしたが、今回は元の道に戻ります。

信号波には正弦波、キャリアには三角波が使われるということを初回に説明しました。

f:id:yuppi5:20190906151311p:plain
図1

続きを読む

自作VVVFインバーターのためのPWM波形再現 (2) 線間電圧と相電流 #床下電子音楽

前回:(1) 各種波形

  • はじめに
  • 前回
  • モーターとインバーターの回路と接続
  • 更に単純化
  • 導出過程
    • 実音
      • 線間電圧 $U-V$
      • U相電流 $2U-V-W$
    • スペクトル
    • 波形
  • 証明?
  • 音の出どころ
  • まとめ

はじめに

今回は線間電圧について深追いするだけなので、正直再現にはほぼ役立たない知識になると思います。ですので、この回は飛ばしてもらっても構いません。

続きを読む

自作VVVFインバーターのためのPWM波形再現 (1) 各種波形 #床下電子音楽

  • PWMについて
  • 信号波とキャリア
  • 出力パルスについて
    • 音を比較する
      • 単相で生成した音
      • 線間電圧で生成した音
  • まとめ

こんにちは、床下電子音楽のゆっQと申します。これから何回かにわたってVVVFインバーターの波形を再現する上で必要だった知識について書いていきます。

始めは用語が多く登場するのでとっつきにくいかもしれません。図を多めにつけたので、それを見てイメージをつかんでいただけたらと思います。

PWMについて

f:id:yuppi5:20190830185446p:plain
図1

続きを読む

JavaScriptのfunction宣言をアロー関数に置き換える正規表現パターン

はじめに

VSCodeを想定しています。

やり方

検索:

function (.+)\((.*)\)
置換:
const $1 = ($2) => 

動作の様子

f:id:yuppi5:20190710213455p:plain
置換前
f:id:yuppi5:20190710213527p:plain
置換後

今後の展開

「function」と関数名の間の空白を半角スペース1個固定にしているので、ここは改良点になると思います。